2013-01-21 116 views
0

我在VBA下面的代碼。從列A5到A20在sheet5的行是:在Excel宏VBA每個循環跳躍交替行

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 

但這代碼提示僅備用值,即。

瑞典

俄羅斯

德國

挪威

法國

任何人都可以請幫我找到了這個錯誤代碼

回答

4

您是通過循環你的範圍內的行也是adva在你的循環中調用變量i。 你可以引用你正在循環的每個變量。

試試這個

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

不錯 - 你打敗了我。 ;) –

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 

編輯現在測試,似乎運行正常)

+0

在線顯示類型不匹配「For i = 1 to fillcolumnrange.Rows」 – antnewbee

+0

@antnewbee讓我測試它 – whytheq

0

建立在裏克的回答,這裏的短版本的For Each循環:

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