退出循环太快vba

我是编程新手,目前正努力学习vba。 我遇到了每个循环的问题,我试图运行的地方,我太快退出我的循环。 我有一个范围,我想testing,看看他们是否有一定的价值观,如果是的话,我想删除列。 但它只是一次testing条件,然后退出循环。 一定会感谢在这方面的任何帮助!

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 

使用cell而不是ActiveCell ,并且不需要Select

此外,您的Exit For语句似乎是可疑的,这将退出第一个单元格。 当一些条件已经满足时,通常只使用Exit语句,这需要处理所有项目之前退出循环(即devise用于查找某个事物第一个实例的循环等)。

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

 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 

注意:区分大小写和尾随/前导空格。 如果您关心“实际”,“实际”,“活动”等,以及“”和“实际”等值,您应该:

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