对于excel宏中的每个循环vba跳转备用行

时间:2013-01-21 19:24:32

标签: excel excel-vba visual-studio-macros vba

我在vba中有以下代码。 sheet5中a5到a20列的行是:

A5 =瑞典

A6 =西班牙

A7 =俄罗斯

A8 =意大利

A9 =德国

A10 =芬兰

A11 =挪威

A12 =瑞士

A13 =法国

A14 =比利时

Set fillcolumnrange = Sheet5.Range("A5:A20")
i = 1
For Each Row In fillcolumnrange.Rows
 If Not Sheet5.Range("A" & i + 4) = "" Then
    MsgBox Row(i)
 End If
 i = i + 1
Next Row

但是这段代码只提示备用值,即。

瑞典

俄罗斯

德国

挪威

法国

任何人都可以帮我找到代码中的错误

3 个答案:

答案 0 :(得分:4)

您循环遍历范围内的行,并在循环中推进变量i。 您可以引用要循环的每个变量。

试试这个

Set fillcolumnrange = Sheet1.Range("A5:A20")
For Each cell In fillcolumnrange.Cells
 If Not cell = "" Then
    MsgBox cell
 End If
Next cell

答案 1 :(得分:3)

你有不同类型的循环混合。

要么做里克所说的。

或使用i

Set fillcolumnrange = Sheet5.Range("A5:A20")
For i = 1 To fillcolumnrange.Rows.Count
    If Not Sheet5.Range("A" & i + 4) = "" Then
       MsgBox Sheet5.Cells(i + 4, 1)
    End If
Next i

或者可能是do-Loop

Set fillcolumnrange = Sheet5.Range("A5:A20")
i = 1
do until i = fillcolumnrange.Rows.Count + 4
 If Not Sheet5.Range("A" & i + 4) = "" Then
    MsgBox Sheet5.Cells(i + 4, 1)
 End If
 i=i+1
Loop

编辑现已测试,似乎运行正常)

答案 2 :(得分:0)

基于Rick的回答,这是For Each循环的简短版本:

For Each cell in fillcolumnrange.Cells
    If len(cell) <> 0 Then MsgBox cell
Next