我有一个For循环&在VBA中的For Each循环中,我使用Offset在循环中的每个单元格的内容中搜索字符串:
使用For Each:
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
使用For:
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”错误。
为什么会这样?
答案 0 :(得分:3)
在底部示例中,您尚未定义With
是什么,因此VBA对您尝试执行的操作一无所知。 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
和getParameterByName()
function getParameterByName( name ){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
答案 1 :(得分:1)
在第一个循环中,Cell是一个Range对象
在第二个单元格中,Nothing
,你必须为它分配一个Range对象,即:
Set Cell = Range("AK" & i)
顺便问一下,你宣布你的变量吗?