VBA';对于';功能未完成周期
我在一张名为“优化”的表格中有一系列列。某些列只包含一个条目(“FAIL”),而其他列则包含一组整数 我需要循环浏览这些列并删除其中失败的列。我使用的代码如下: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
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