如何将 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 中的惯用语。)