2009-07-13 131 views
0

我想處理for循環的每個元素。拿這個代碼,爲什麼只處理每個第二個元素?excel vba每個循環一次需要2步

For Each row In ws.Rows 
    If IsEmpty(row.Cells(row.row, 1)) Then 
     Exit For 
    Else 
     MsgBox row.Cells(row.row, 1).value 
    End If 
Next 

在此先感謝您的答案!

+2

自從我使用VBA以來已經有一段時間了,但是您不應該在查看ws.Cells(row.row,1)而不是row.Cells(row.row,1)? – 2009-07-13 16:34:57

回答

2

而不是引用Row.Cells引用Worksheet.Cells。 另外,您可能需要選擇工作表的ActiveRange,這可以防止for-each中出現大量無用的行。

查看MSDN的示例。

+1

UsedRange,不是ActiveRange。 – 2009-07-13 21:21:13

0

設置WS與單元B1的範圍內的範圍:B10,其包含的值分別1-10將產生所期望的結果:

子宏1() 昏暗WS作爲範圍

集WS =範圍( 「B1:B10」)

對於每行中ws.Rows

If IsEmpty(ws.Cells(Row.Row, 1)) Then 
    Exit For 
Else 
    MsgBox ws.Cells(Row.Row, 1).Value 
End If 

下一頁

End Sub