所以我有这行代码
Dim j As Long, i As Long
j = 18
For i = 3 To 47
If ThisWorkbook.Sheets("Skills").Range("E" & i) > 0 Then
ThisWorkbook.Sheets("MainPage").Range("B" & j) = ThisWorkbook.Sheets("Skills").Range("B" & i)
j = j + 1
End If
Next
End Sub
我的问题如下,首先在If ....
线上我有对象需要的错误,现在我修复了(我想)但现在在下一行sheetSkills("B" & j)....
我得到下标超出范围错误。任何想法?我真的无法理解
ThisWorkbook.Sheets
Option Explicit
以强制变量声明(虽然这不是您的问题的根源)Range.Value = Range.Value
我能看到的唯一其他错误是您的工作表名称不完全匹配。我运行此代码没有任何问题(和你的)。如果你的实际工作表名称有一个滞后的空间或其他一些乍一看不是很明显的字符,这将给你Subscript Out of Range
,因为这需要完全匹配。
Sub Skills()
Dim j As Long, i As Long
j = 18
For i = 3 To 47
If ThisWorkbook.Sheets("Skills").Range("E" & i) > 0 Then
ThisWorkbook.Sheets("MainPage").Range("B" & j).Value = ThisWorkbook.Sheets("Skills").Range("E" & i).Value
j = j + 1
End If
Next
End Sub
您可以使用它来测试您的工作表名称是否被找到。如果这些行中的任何一行出错,则表示VBA无法在您的书上找到该表。
Sub Test()
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Skills")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("MainPage")
End Sub