0

我在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

但是此代码仅提示替代值,即。

瑞典

俄罗斯

德国

挪威

法国

谁能帮我找出代码中的错误

4

3 回答 3

4

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

试试这个

Set fillcolumnrange = Sheet1.Range("A5:A20")
For Each cell In fillcolumnrange.Cells
 If Not cell = "" Then
    MsgBox cell
 End If
Next cell
于 2013-01-21T19:33:48.993 回答
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

编辑现在经过测试,似乎运行正常)

于 2013-01-21T21:18:22.257 回答
0

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

对于 fillcolumnrange.Cells 中的每个单元格
    If len(cell) <> 0 Then MsgBox cell
下一个
于 2013-01-22T09:20:06.373 回答