所以我在每个循环中使用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单元格的值。我如何获得实际的细胞对象?
由于
答案 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)