分配给常数不允许

时间:2014-05-13 06:52:51

标签: excel vba excel-vba

我在我的一个宏中遇到此错误,代码是

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

2 个答案:

答案 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}}陈述)