我在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
但是这段代码只提示备用值,即。
瑞典
俄罗斯
德国
挪威
法国
任何人都可以帮我找到代码中的错误
答案 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