VBA中Cell.Offset与ActiveCell.Offset的行为
我在VBA中有一个For循环&a For Each循环,其中我使用Offset搜索循环中每个单元格内容中的字符串: 用于每个:VBA中Cell.Offset与ActiveCell.Offset的行为,vba,excel,Vba,Excel,我在VBA中有一个For循环&a 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
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
Lastrow=ActiveSheet.Range(“A2”).End(xlDown).Row
设置Myrange=ActiveSheet.Range(“M2:M”和Lastrow)
countrows=单元格(Cells.Rows.Count,“A”).End(xlUp).Row
对于Myrange中的每个单元格
如果strPattern“”则
如果单元格偏移量(0,31)“嘶嘶”那么
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
countrows=单元格(Cells.Rows.Count,“A”).End(xlUp).Row
对于i=1到countrows
范围(“AK”&i)。选择
检查\u值=活动单元格
如果ActiveCell.Offset(0,7)“嗡嗡”那么
ActiveCell.EntireRow.Copy
在下面的示例中,我必须使用ActiveCell.Offset。使用Cell.Offset甚至Cell.Offset.Value会抛出“需要对象”错误
为什么会出现这种情况?第一个循环中的单元格是范围对象。
在第二个单元格中,一个单元格为
无
,您必须为其指定一个范围对象,即:
Set Cell = Range("AK" & i)
顺便说一句,您是否声明了变量?在第一个循环中,单元格是一个范围对象。
在第二个单元格中,一个单元格为
无
,您必须为其指定一个范围对象,即:
Set Cell = Range("AK" & i)
顺便说一句,您是否声明了变量?在下面的示例中,您没有定义什么是
Cell
,因此VBA不知道您要做什么<代码>单元格不是一个特殊的词-在上面的示例中,它是一个变量
编写底部语句的更好方法是使用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
countrows=单元格(Cells.Rows.Count,“A”).End(xlUp).Row
对于i=1到countrows
带范围(“AK”和“i”)
检查_值=.Value2
如果.Offset(0,7)“嗡嗡”那么
.EntireRow.Copy
如果结束
以
接下来我
在下面的示例中,您没有定义什么是单元格
,因此VBA不知道您要做什么<代码>单元格不是一个特殊的词-在上面的示例中,它是一个变量
编写底部语句的更好方法是使用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
countrows=单元格(Cells.Rows.Count,“A”).End(xlUp).Row
对于i=1到countrows
带范围(“AK”和“i”)
检查_值=.Value2
如果.Offset(0,7)“嗡嗡”那么
.EntireRow.Copy
如果结束
以
接下来我
我的猜测是因为在For
循环中,您使用了“选择”,而在For each
中,您具体地引用了单元格。我的猜测是因为在For
循环中,您使用了“选择”,而在For each
中,您具体地引用了单元格。