退出循环太快vba

时间:2016-09-09 15:17:36

标签: excel vba excel-vba

我是编程的新手,目前正致力于学习vba。我有一个问题,每个循环我试图运行我太快退出我的循环。我有一个范围,我想测试它是否存在某些值,如果有,我想删除该列。但它只测试一次条件然后退出循环。非常感谢任何帮助!

  For Each cell In ActiveSheet.Range("S1:AA1")


    If ActiveCell.Value = "Actual" Then
        ActiveCell.EntireColumn.Delete


    ElseIf ActiveCell.Value = "" Then
        ActiveCell.EntireColumn.Delete


    Else: ActiveCell.Offset(, 1).Select


    End If

Exit For

Next

1 个答案:

答案 0 :(得分:5)

使用cell代替ActiveCell,无需Select

此外,您的Exit For声明似乎可疑,这将退出第一个单元格。通常只有在满足某些条件时才使用Exit语句,这需要在处理所有项目之前退出循环(即,设计为首先找到的循环 某事的实例等。)

最后,当从集合中删除成员时,您需要以相反的顺序执行此操作(否则,必须采取特殊措施以确保处理所有项目。)

Dim i as Long
Dim cell as Range
For i = ActiveSheet.Range("S1:AA1").Columns.Count to 1 Step - 1
    Set cell = ActiveSheet.Range("S1:AA1").Cells(i)
    Select Case cell.Value
        Case "Actual", ""
           cell.EntireColumn.Delete
        Case Else
           'Do nothing, unless you need to do something...
    End Select
Next

注意:区分大小写和尾随/前导空格。如果您关注" ACTUAL","实际"," AcTuAl"等,以及"等值"和"实际",你应该这样做:

Select Case UCase(Trim(cell.Value))
    Case "ACTUAL", ""
...