Excel 脚本反复循环-为什么?
我是一名VBA新手,尝试使用If语句创建两个循环-根据以下代码:Excel 脚本反复循环-为什么?,excel,vba,Excel,Vba,我是一名VBA新手,尝试使用If语句创建两个循环-根据以下代码: Sub Filter() For Count = Worksheets("STR").Range("A1").End(xlDown).Row To 1 Step -1 For Counter = 5 To Worksheets("Filter").Range("A5").End(xlDown).Row With Worksheets("STR").Range("C" & Count) If
Sub Filter()
For Count = Worksheets("STR").Range("A1").End(xlDown).Row To 1 Step -1
For Counter = 5 To Worksheets("Filter").Range("A5").End(xlDown).Row
With Worksheets("STR").Range("C" & Count)
If .Value Like Worksheets("Filter").Range("C" & Counter).Value _
Or .Value Like Worksheets("Filter").Range("D" & Counter).Value _
Or .Value Like Worksheets("Filter").Range("E" & Counter).Value _
Or .Value Like Worksheets("Filter").Range("A" & Counter).Value Then
Worksheets("STR").Range("D" & Count) = "X"
'Worksheets("STR").Row("A" & Count).EntireRow.Delete
Next Counter
End If
End With
Next Count
End Sub
在某个阶段,我想它会反复循环,直到崩溃。调试器告诉我这是“如果结束”行,但我看不出有什么问题。有没有办法让这更容易
提前谢谢 四件事
End(xlDown)
查找最后一行。有关如何查找最后一行,请参见此屏幕更新
设置为False并将其重新设置为启用Option Explicit
Sub Filter()
Dim LastRowSTR As Long, LastRowFilter As Long
On Error GoTo Whoa
Application.ScreenUpdating = False
With Sheets("STR")
LastRowSTR = .Range("A" & .Rows.Count).End(xlUp).Row
End With
With Sheets("Filter")
LastRowFilter = .Range("A" & .Rows.Count).End(xlUp).Row
End With
For Count = LastRowSTR To 1 Step -1
For Counter = 5 To LastRowFilter
With Worksheets("STR").Range("C" & Count)
If .Value Like Worksheets("Filter").Range("C" & Counter).Value _
Or .Value Like Worksheets("Filter").Range("D" & Counter).Value _
Or .Value Like Worksheets("Filter").Range("E" & Counter).Value _
Or .Value Like Worksheets("Filter").Range("A" & Counter).Value Then
Worksheets("STR").Range("D" & Count) = "X"
'Worksheets("STR").Row("A" & Count).EntireRow.Delete
End If
End With
Next Counter
Next Count
LetsContinue:
Application.ScreenUpdating = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
有趣的阅读
主题:“犯错”是人类的行为
链接:如图所示,代码没有运行-您将得到一个没有错误的Next,因为
Next计数器
行应该在End If
和End With
之后,而不是在HEY Barrowc,thx之前-但它仍然不起作用(或者需要很长时间)。是否有任何方法可以让这一功能更好?+1可能希望在模块顶部添加一个选项Explicit
,如果模块顶部还没有一个选项=1用于高级客户服务@巴罗克:是的,非常正确。添加了“…”和选项Explicit
意味着需要声明计数
和计数器
(除非它们在其他地方的范围内)