我在我的一个宏中遇到此错误,代码是
Dim rdel1 As Range
Dim rdel2 As Range
Set rdel1 = Sheets("Sheet1").Range(A1:B100)
For Each rdel2 In rdel1.Cells
If rdel2.Value = "No item selected" Then
rdel2.Offset(1, 0).EntireRow.Delete
rdel2.EntireRow.Delete
rdel2.Address = rdel2.Offset(-1, 0) "Error in this line"
End If
Next rdel2
我想通过offset(-1,0)
更改redel2的地址。我知道它看起来没有正确的方式来编写它,但我无法获得正确的语法来改变它。有人可以帮忙!请!
答案 0 :(得分:2)
执行
后rdel2.EntireRow.Delete
rdel2
将是“Nothing”,因此任何操纵它的尝试都将失败。
如果不 Nothing
,并且引用行中的单元格> 1,然后
Set rdel2 = rdel2.Offset(-1, 0)
会起作用。
目前尚不清楚你想要达到的目标,但这可能会让你开始
Sub Demo()
Dim rdel1 As Range
Dim rdel2 As Range
Set rdel1 = Sheets("Sheet1").Range("A1:A100")
Dim rw As Long
For rw = rdel1.Rows.Count To 1 Step -1
Set rdel2 = rdel1.Cells(rw, 1)
If rdel2.Value = "No item selected" Then
rdel2.Offset(1, 0).EntireRow.Delete
End If
Next
End Sub
答案 1 :(得分:0)
rdel2
是一个范围,.Offset(-1,0)
会返回一个范围,如果您要更改rdel2 = rdel2.Offset(-1, 0)
,只需rdel2
。
虽然在您的情况下,For Each
循环会更新rdel2
,所以此行无效(除非您没有显示所有代码,实际上有问题的行与{ {1}}陈述)