对于excel宏中的每个循环,vba跳转备用行
我有下面的vba代码。表5中a5列至a20列的行为: a5=瑞典 a6=西班牙 a7=俄罗斯 a8=意大利 a9=德国 a10=芬兰 a11=挪威 a12=瑞士 a13=法国 a14=比利时对于excel宏中的每个循环,vba跳转备用行,excel,visual-studio-macros,vba,Excel,Visual Studio Macros,Vba,我有下面的vba代码。表5中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)
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
但此代码只提示其他值,即
瑞典
俄罗斯
德国
挪威
法国
有人能帮我找出代码中的错误吗?您正在循环范围内的行,并在循环中推进变量
i
。
您可以引用正在循环的每个变量
试试这个
Set fillcolumnrange = Sheet1.Range("A5:A20")
For Each cell In fillcolumnrange.Cells
If Not cell = "" Then
MsgBox cell
End If
Next cell
你有一个不同类型的循环混合 要么照瑞克说的做 或者使用
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循环
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
(EDIT现在已测试并运行正常)基于Rick的答案,以下是每个循环的
简短版本:
For Each cell in fillcolumnrange.Cells
If len(cell) <> 0 Then MsgBox cell
Next
对于fillcolumnrange.Cells中的每个单元格
如果len(cell)为0,则MsgBox cell
下一个
好极了,你比我强多了在“i=1到fillcolumnrange.Rows”行上显示类型不匹配