满足条件时重置循环excel vba
我有一张excel表格。我想在满足条件时重置循环,因为我有两个条件。然而,我想到了在这个解决方案网站的for循环旁边实现步骤。它不起作用,因为它只适用于数字,而不适用于A1。解决这个问题的方法是什么?多谢各位满足条件时重置循环excel vba,excel,vba,Excel,Vba,我有一张excel表格。我想在满足条件时重置循环,因为我有两个条件。然而,我想到了在这个解决方案网站的for循环旁边实现步骤。它不起作用,因为它只适用于数字,而不适用于A1。解决这个问题的方法是什么?多谢各位 Sub run() Set MR = Range("A1:Q1") 'Loop through the cell in the first row For Each cell In MR If cell.Value = "First Discovered"
Sub run()
Set MR = Range("A1:Q1")
'Loop through the cell in the first row
For Each cell In MR
If cell.Value = "First Discovered" Or cell.Value = "Last Observed" Then cell.EntireColumn.Delete
Next cell
End Sub
如果要查看第一行的列
A:Q
,则不需要重置循环。关键是避免在循环内删除,因为这会在循环范围内产生移位
下面的解决方案将在您的范围内循环,并将目标单元格添加到联合体
(单元格集合),循环完成后,它将删除联合体中所有单元格的列
而且 添加显式
选项
。您需要声明变量,Option Explicit
将强制您这样做。这也间接地充当了一个方便的拼写检查器
最后一件事:我将变量“cell
”更改为“myCell
”,以避免与已经存在的对象Cells
混淆
我认为解决方案是只在满足条件时重置循环。我应该扩展我的思路去寻找其他的解决方案。谢谢你的伟大解决方案。
Option Explicit
Sub run()
Dim MR As Range, myCell As Range, DeleteMe As Range
Set MR = Range("A1:Q1")
For Each myCell In MR
If myCell = "First Discovered" Or myCell = "Last Observed" Then
If DeleteMe Is Nothing Then
Set DeleteMe = myCell
Else
Set DeleteMe = Union(DeleteMe, myCell)
End If
End If
Next myCell
If Not DeleteMe Is Nothing Then DeleteMe.EntireColumn.Delete
End Sub