我对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
答案 0 :(得分:2)
如果错误 1004 ,则发生在
If Cells(Counter, 1).Value <> Empty Then Flag = False
我能想象的唯一原因是,计数器超出了允许的最大Rows.Count
(即1048576)。这意味着您的工作表中的行11
下方没有任何非空单元格,因此Flag
永远不会重置为False
。
ActiveSheet
很可能不是你实际认为的那个。最佳解决方案是放弃使用ActiveSheet
并将其替换为显式工作表。