赋值为常数不允许

我得到这个错误在我的macros之一,代码是

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的地址。 我知道它不看正确的方式来写它,但我无法得到正确的语法来改变它。 有人可以帮助! 请!

执行之后

 rdel2.EntireRow.Delete 

rdel2将是“没有”,所以任何操纵它的尝试都将失败。

如果它不是 Nothing ,并且在一行中引用一个单元格,那么

 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 

rdel2是一个范围, .Offset(-1,0)返回一个范围,如果你想改变rdel2 ,只要做rdel2 = rdel2.Offset(-1, 0)

虽然,在你的情况下, For Each循环将更新rdel2所以这行将是无用的(除非你没有显示所有的代码,实际上有更多的问题行和Next rdel2语句之间)