对象定义错误!我错过了什么吗?

时间:2017-07-27 02:27:36

标签: vba object

我对vba相对较新,但我已经坚持使用这段代码几个小时了。无法弄清楚它有什么问题。我收到调试错误 “If Cells(Counter,1).Value<> Empty Then Flag = False”

它表示应用程序定义或对象定义错误。我不知道问题在于什么。任何帮助将不胜感激。

Sub Macro1()



ActiveSheet.Unprotect
Workbooks("Cerebus.xlsm").Sheets("Tree").Activate
N = ActiveSheet.Cells(3, 2).Value
Flag = True
Counter = 11

# Counter loops

Do While (Flag = True)
Counter = Counter + 1
If Cells(Counter, 1).Value <> Empty Then Flag = False
Loop

# adjusting for white space
For i = 10 To (Counter - 11) + Counter + 1
For j = 1 To (Counter - 11) / 2 + 1
Cells (i,j).Select
Selection.Clear
Next
Next

For i = 0 To N
Cells(10, N + 1).Value = N
Cells(11 + i * 4, N + 1).Value = 5
Cells(11 + i * 4, N + 1).Interior.ColorIndex = 6
Cells(11 + i * 4 + 1, N + 1).Value = 5
Cells(11 + i * 4 + 1, N + 1).Interior.ColorIndex = 12
Next

For j = 1 To N
For i = 0 To N - j
Cells(10, N - j + 1).Value = N - j
Cells(11 + 2 * j + i * 4, N - j + 1).Value = 6
Cells(11 + 2 * j + i * 4, N - j + 1).Interior.ColorIndex = 6
Cells(11 + 2 * j + i * 4 + 1, N - j + 1).Value = 6
Cells(11 + 2 * j + i * 4 + 1, N - j + 1).Interior.ColorIndex = 12
Next
Next

End Sub

1 个答案:

答案 0 :(得分:2)

如果错误 1004 ,则发生在

If Cells(Counter, 1).Value <> Empty Then Flag = False

我能想象的唯一原因是,计数器超出了允许的最大Rows.Count(即1048576)。这意味着您的工作表中的行11下方没有任何非空单元格,因此Flag永远不会重置为False

ActiveSheet很可能不是你实际认为的那个。最佳解决方案是放弃使用ActiveSheet并将其替换为显式工作表。