为每个循环在excelmacrosvba跳跃交替行

我在vba下面的代码。 sheet5中列a5至a20中的行是:

A5 =瑞典

A6 =西class牙

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 

但是这个代码只是提示替代值,即。

瑞典

俄国

德国

挪威

法国

任何人都可以请帮我find代码中的错误

你正在循环遍历你的范围中的行,并且还在你的循环中推进variablesi 。 你可以引用你正在循环的每个variables。

尝试这个

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

你有不同types的循环的混合物。

要么做里克所说的。

或者使用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 

编辑现在testing,似乎运行正常)

基于里克的回答,下面是For Each循环的简短版本:

对于fillcolumnrange.Cells中的每个单元格
    如果len(cell)<> 0则MsgBox单元格
下一个