[英]Multiple cell selection in VBA using ActiveCell.Offset(0, 1).Value
[英]Behavior of Cell.Offset versus ActiveCell.Offset in VBA
我在VBA中有一个For循环和For Each循环,在其中使用Offset在循环的每个单元格内容中搜索一个字符串:
对于每个使用:
Lastrow = ActiveSheet.Range("A2").End(xlDown).Row
Set Myrange = ActiveSheet.Range("M2:M" & Lastrow)
countrows = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For Each Cell In Myrange
If strPattern <> "" Then
If Cell.Offset(0, 31) <> "Fizz" Then
strInput = Cell.Value
用于:
countrows = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For i = 1 To countrows
Range("AK" & i).Select
check_value = ActiveCell
If ActiveCell.Offset(0, 7) <> "Buzz" Then
ActiveCell.EntireRow.Copy
在底部的示例中,我必须使用ActiveCell.Offset。 使用Cell.Offset或什至Cell.Offset.Value都会引发“ Object Required”错误。
为什么会这样呢?
在下面的示例中,您尚未定义Cell
是什么,因此VBA不了解您要执行的操作。 Cell
不是一个特殊的单词-在最上面的示例中它是一个变量
编写底部语句的更好方法是使用With
代替ActiveCell
和Select
countrows = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For i = 1 To countrows
With Range("AK" & i)
check_value = .Value2
If .Offset(0, 7) <> "Buzz" Then
.EntireRow.Copy
End If
End With
Next i
在第一个循环中,Cell是一个Range对象。
在第二个Cell中, Nothing
必须为其分配一个Range对象,即:
Set Cell = Range("AK" & i)
顺便说一句,您是否声明变量?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.