【发布时间】:2019-02-14 22:30:01
【问题描述】:
所以我有这行代码
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).... 我得到下标超出范围错误。有人有什么想法吗?实在想不通
【问题讨论】:
-
运行时,活动工作簿中是否有名为“MainPage”和“Skills”的工作表?这是我可以在这段代码中看到的唯一潜在下标错误 -
i和j都受循环约束。 -
我有名为 MainPage 和 Skills 的工作表,是的,因为调用它 Sheet1 或 Sheet 2 将是尴尬的代码恕我直言
-
请更新/添加您正在尝试的当前代码...我在任何地方都看不到
wsSkills。此外,如果您尝试引用wsSkills上的范围,则需要使用wsSkills.Range("B"&j)或wsSkills.Cells(j,2) -
关键字是“活动”工作簿。当您使用
Application.Worksheets("Whatever")时,它只会在活动工作簿中查找该工作表名称。如果你有不止一个开放,而错误的一个有焦点,你可能会也可能不会找到它。请参阅@urdearboy 的回答,了解更好的解决方法。 -
我当前收到错误的代码行是
ThisWorkbook.Sheets("MainPage").Range("B" & j) = ThisWorkbook.Sheets("Skills").Range("B" & i)工作表名称正确,列字母也正确