我有一列包含以下值:A1 = 0 A2 = 1 A3 = 3 A4 = 4 A5 = 0 A6 = 1
我希望选择 A 列并在任何 0 实例上方插入一个新列。
我尝试了以下代码,但出现了错误,我不确定哪里出了问题。我相信是 OFFSET 导致了这个问题,但我不是 100% 确定。
Dim c As Range
For Each c In Range("A:A")
If c.Value Like "0" Then
c.Offset(-1, 0).EntireRow.Insert
End If
Next c
其中内容如下:
运行时错误“1004”:应用程序定义或对象定义的错误。
然后它c.Offset(-1, 0).EntireRow.Insert
在代码中突出显示
答案1
处没有单元格Range("A1").offset(-1)
,因此失败,因为对象不存在。更改A1
为其他内容,否则它会起作用。
这可能就是你想要做的 -
Sub test()
Dim c As Range
For Each c In Range("A:A")
If c.Value Like "0" Then
Rows(c.Row).Insert shift:=xlDown
End If
Next c
End Sub
但是,仅使用此代码,您将陷入无限循环。您应该使用类似下面的代码 -
Sub test()
Dim d As Integer
d = Range("A:A").End(xlDown).Row
Dim c As Range
For i = d To 1 Step -1
If Cells(i, 1).Value Like "0" Then
Rows(Cells(i, 1).Row).Insert shift:=xlDown
End If
Next
End Sub