宏:在包含值的单元格上方插入新行

宏:在包含值的单元格上方插入新行

我有一列包含以下值: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

相关内容