2017-07-24 91 views
0

在Excel中,我有一列数据。我想使用这一列的数据进行循环。 下面的代码在遇到1个空行时停止。不过,我需要循环进行更多的两个步骤。如何扩展一个Do直到两个循环的IsEmpty循环更多?

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 

我希望我的问题是清楚的!

回答

1

你需要一个新的变量来跟踪这个。你可以做到这一点在现有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...你有一个函数或子程序重复呼叫),但第二个稍微更明显的发生了什么(虽然这是有争议的)。

1

你可以使用的东西上的

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中是惯用的)