2009-07-13 6 views
0

for 루프의 모든 요소를 ​​처리하려고합니다. 이 코드를 살펴보면 왜 모든 두 번째 요소가 처리됩니까?각 루프에 대해 vba를 Excel에서 한 번에 두 걸음 처리합니다.

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.row, 1)? –

답변

2

Row.Cell을 참조하는 대신 Worksheet.Cells를 참조하십시오. 워크 시트의 ActiveRange를 선택하여 for-each에서 많은 쓸모없는 행을 방지 할 수 있습니다.

이에 대한 예제는 MSDN을 확인하십시오. 전지 B1의 범위의 범위로

+1

활성 범위가 아닌 UsedRange입니다. –

0

설정 WS : B10 값 1-10 포함 각각 원하는 결과를 생성 할 것이다 :

서브을 Macro1() 범위로 어둡게 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