如何在excel VBA中获取“Cell”对象

时间:2012-08-13 21:13:32

标签: excel vba

所以我在每个循环中使用a来遍历一堆行。我遇到了一个问题,我正在删除行,这导致一行被跳过,所以我已经改为do while循环。

我遇到的问题是试图获得一个“细胞”对象。在我之前:

For Each C In Worksheets("Blah").Range("A2:A" & lastRow).Cells

我可以做像

这样的事情
C.Offset(1, 0)
C.Value = "Troy"

等。我尝试使用:

C = Worksheets("Blah").Cells(iRow, 2)

但这只是给了C单元格的值。我如何获得实际的细胞对象?

由于

2 个答案:

答案 0 :(得分:18)

删除行时,最好从下往上。您的特定问题是您需要Set关键字将C设置为范围对象,而不是将“Let”C设置为范围Value。 Range有一个默认属性Value,当你省略属性时使用的属性。因此,在分配对象变量时必须使用Set。这是一个向后循环以删除行并分配对象变量的示例。

Sub DeleteRows()

    Dim i As Long
    Dim rRng As Range
    Dim rCell As Range

    Set rRng = Sheet1.Range("A1:A9")

    For i = rRng.Rows.Count To 1 Step -1
        Set rCell = rRng.Cells(i, 1)
        If rCell.Value Mod 2 = 1 Then
            rCell.EntireRow.Delete
        End If
    Next i

End Sub

答案 1 :(得分:0)

要获取对象引用而不是值本身,您需要使用“设置”

Set C = Worksheets("Blah").Cells(iRow, 2)