gpt4 book ai didi

excel - 脚本一遍又一遍地循环——为什么?

转载 作者:行者123 更新时间:2023-12-04 20:19:19 26 4
gpt4 key购买 nike

我是一个 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 .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 If”行,但我看不出有什么问题。有没有办法让这更容易?

提前致谢!

最佳答案

四件事

  • 缩进你的代码。这将确保您不会像@barrowc 建议的那样犯错误。
  • 我建议不要使用 End(xlDown)找到最后一行。看到这个link关于如何找到最后一行。
  • ScreenUpdating为 False 并将其重新打开。
  • 使用错误处理

  • 应用上述 4 条建议后,您的代码将如下所示。
    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
    有趣的阅​​读。
    主题:“犯错”是人的
    友情链接 : http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/

    关于excel - 脚本一遍又一遍地循环——为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942392/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com