VBA';对于';功能未完成周期

VBA';对于';功能未完成周期,vba,excel,for-loop,Vba,Excel,For Loop,我在一张名为“优化”的表格中有一系列列。某些列只包含一个条目(“FAIL”),而其他列则包含一组整数 我需要循环浏览这些列并删除其中失败的列。我使用的代码如下: Sub delete_fails() Dim empty_column1 As Integer Dim iTimes As Long Dim iRepeat As Integer iTimes = Application.WorksheetFunction.CountA(Sheets("Optimisation").Range("1

我在一张名为“优化”的表格中有一系列列。某些列只包含一个条目(“FAIL”),而其他列则包含一组整数

我需要循环浏览这些列并删除其中失败的列。我使用的代码如下:

Sub delete_fails()

Dim empty_column1 As Integer
Dim iTimes As Long
Dim iRepeat As Integer

iTimes = Application.WorksheetFunction.CountA(Sheets("Optimisation").Range("1:1"))

empty_column1 = 1

    For iRepeat = 1 To iTimes
        If Sheets("Optimisation").Cells(1, empty_column1).Value = "FAIL" Then
            Sheets("Optimisation").Columns(empty_column1).EntireColumn.Delete
        End If
        empty_column1 = empty_column1 + 1
        Next iRepeat

End Sub
该代码部分工作,因为它删除了一些失败列,但没有将它们全部删除。在成功删除所有失败列之前,我必须运行宏10-15次。代码中是否存在可以清除的bug,因此只需运行宏一次?也许我需要指示Excel忽略任何包含数字的列,然后转到下一列


(注意:如果编码伤害了您的大脑,这里的Total VBA newb会提前道歉。)

删除列时不要增加空列1

For iRepeat = 1 To iTimes
    If Sheets("Optimisation").Cells(1, empty_column1).Value = "FAIL" Then
        Sheets("Optimisation").Columns(empty_column1).EntireColumn.Delete
    Else
        empty_column1 = empty_column1 + 1
    End If
Next iRepeat

删除对象时,在案例列中,始终向后循环,因此更改循环:

For iRepeat = 1 To iTimes
致:

请尝试以下代码:

With Sheets("Optimisation")
    For iRepeat = iTimes To 1 Step -1
        If .Cells(1, iRepeat).Value = "FAIL" Then
            .Columns(iRepeat).Delete
        End If
    Next iRepeat
End With
With Sheets("Optimisation")
    For iRepeat = iTimes To 1 Step -1
        If .Cells(1, iRepeat).Value = "FAIL" Then
            .Columns(iRepeat).Delete
        End If
    Next iRepeat
End With