以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:如下VBA代码该怎么改?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=131313)

--  作者:落叶孤影
--  发布时间:2019/2/22 19:06:00
--  求助:如下VBA代码该怎么改?
以前一个离职的同事写的一段代码,现在提示出错,本人小白看不懂,请大神帮忙看看哪里错了,谢谢!

 Sub tt()
 Application.ScreenUpdating = False
      Dim d
      Dim arr
      Dim x As Integer
      Dim rng As Object, rngs As Object
      Set rng = Sheets(4).Rows(2).Find([b1], , , xlWhole)
      Set rngs = Sheets(4).Rows(2).Find([b2], , , xlWhole)
      rngc = rng.Column
      rngsc = rngs.Column  提示这里错误
      
      Set d = CreateObject("scripting.dictionary")
     
      For i = 4 To Sheets.Count - 3
         For y = 4 To 48
            d(Sheets(2).Cells(y, 2).Value) = 0
         Next
            Sheets(i).Select
            arr = Sheets(i).Range("j3:nx48")
            For x = rngc To rngsc
               If IsDate(Sheets(i).Cells(2, x)) = True Then
                   For y = 4 To 39
                      d(Sheets(2).Cells(y, 2).Value) = d(Sheets(2).Cells(y, 2).Value) + arr(y - 3, x - 9)
                   Next
                   For y = 40 To 40
                      d(Sheets(2).Cells(y, 2).Value) = arr(y - 3, rngc - 9)
                   Next
                    For y = 41 To 49
                      d(Sheets(2).Cells(y, 2).Value) = arr(y - 3, x - 9)
                   Next
                   
               End If
            ThisWorkbook.Sheets(2).Cells(4, i - 1).Resize(d.Count) = Application.Transpose(d.items)
             
          Next
      Next
      Sheets(2).Select
  
     Set rng = Nothing
      Set rngs = Nothing
     Application.ScreenUpdating = True
        End Sub
\'srow = Sheets(i).UsedRange.Rows.Count

[此贴子已经被作者于2019/2/22 19:08:09编辑过]

--  作者:落叶孤影
--  发布时间:2019/2/22 19:06:00
--  
 Sub tt()
 Application.ScreenUpdating = False
      Dim d
      Dim arr
      Dim x As Integer
      Dim rng As Object, rngs As Object
      Set rng = Sheets(4).Rows(2).Find([b1], , , xlWhole)
      Set rngs = Sheets(4).Rows(2).Find([b2], , , xlWhole)
      rngc = rng.Column
      rngsc = rngs.Column
      
      Set d = CreateObject("scripting.dictionary")
     
      For i = 4 To Sheets.Count - 3
         For y = 4 To 48
            d(Sheets(2).Cells(y, 2).Value) = 0
         Next
            Sheets(i).Select
            arr = Sheets(i).Range("j3:nx48")
            For x = rngc To rngsc
               If IsDate(Sheets(i).Cells(2, x)) = True Then
                   For y = 4 To 39
                      d(Sheets(2).Cells(y, 2).Value) = d(Sheets(2).Cells(y, 2).Value) + arr(y - 3, x - 9)
                   Next
                   For y = 40 To 40
                      d(Sheets(2).Cells(y, 2).Value) = arr(y - 3, rngc - 9)
                   Next
                    For y = 41 To 49
                      d(Sheets(2).Cells(y, 2).Value) = arr(y - 3, x - 9)
                   Next
                   
               End If
            ThisWorkbook.Sheets(2).Cells(4, i - 1).Resize(d.Count) = Application.Transpose(d.items)
             
          Next
      Next
      Sheets(2).Select
  
     Set rng = Nothing
      Set rngs = Nothing
     Application.ScreenUpdating = True
        End Sub
\'srow = Sheets(i).UsedRange.Rows.Count


--  作者:有点蓝
--  发布时间:2019/2/22 20:28:00
--  
我也看不懂