如何将 Do Until IsEmpty Loop 扩展为更多两个循环?
How can I expand a Do Until IsEmpty Loop for two loops more?
在Excel我有一列数据。我想将这一列数据用于循环。
下面的代码在遇到 1 个空行时停止。但是我需要循环再进行两个步骤。
i = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2)
'do something...
i = i + 1
Loop
换句话说,有没有像这样的:
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) + 2
我希望我的问题很清楚!
您需要一个新变量来跟踪它。您可以在现有的 DO UNTIL
循环中执行此操作:
i = 1
extraTwo = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) or extraTwo > 2
'do something...
i = i + 1
if IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) then extraTwo = extraTwo + 1
Loop
或在外部循环中:
i = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2)
'do something...
i = i + 1
Loop
For extraTwo = 1 to 2
'do something...
i = i + 1
extraTwo = extraTwo + 1
Next
第一个意味着没有代码重复(即使你将 do something...
移动到一个函数或子例程,你也必须重复调用),但第二个稍微更明显地发生了什么(尽管这是有争议的) .
你可以使用
Dim numEmpties as Long
i = 1
Do While True
If IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) Then
numEmpties = numEmpties + 1
If numEmpties = 3 Then Exit Do
End If
'do something
i = i + 1
Loop
这里我基本上是手动控制循环索引,并且以这种方式编写它很优雅,因为 IsEmpty
测试只写了一次。 (这是 C 中的惯用语。)
在Excel我有一列数据。我想将这一列数据用于循环。 下面的代码在遇到 1 个空行时停止。但是我需要循环再进行两个步骤。
i = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2)
'do something...
i = i + 1
Loop
换句话说,有没有像这样的:
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) + 2
我希望我的问题很清楚!
您需要一个新变量来跟踪它。您可以在现有的 DO UNTIL
循环中执行此操作:
i = 1
extraTwo = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) or extraTwo > 2
'do something...
i = i + 1
if IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) then extraTwo = extraTwo + 1
Loop
或在外部循环中:
i = 1
Do Until IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2)
'do something...
i = i + 1
Loop
For extraTwo = 1 to 2
'do something...
i = i + 1
extraTwo = extraTwo + 1
Next
第一个意味着没有代码重复(即使你将 do something...
移动到一个函数或子例程,你也必须重复调用),但第二个稍微更明显地发生了什么(尽管这是有争议的) .
你可以使用
Dim numEmpties as Long
i = 1
Do While True
If IsEmpty(ActiveWorkbook.Worksheets("Data").Cells(i, 1).Value2) Then
numEmpties = numEmpties + 1
If numEmpties = 3 Then Exit Do
End If
'do something
i = i + 1
Loop
这里我基本上是手动控制循环索引,并且以这种方式编写它很优雅,因为 IsEmpty
测试只写了一次。 (这是 C 中的惯用语。)