728x90

For Each ~ Next 구문



For Each ~ Next 구문은 For ~ Next 구문과 거의 동일한데 약간 다른 점은 ...

For ~ Next 구문은 전체중에서 원하는 것만큼만 실행이 가능한데

For Each ~ Next 구문은 무조건 전체를 실행하며, 거꾸로 순서를 지정해서 할 수가 없습니다.



이거 무슨 뜬구름 잡는건지 감이 잘 안잡히시죠?



Selection 한 구간 전체는 배열이구요. 각각의 Cell은 배열의 요소 입니다.

Sub Selection_VBA()

Dim rngC As Range

For Each rngC in Selection

if rngC.Value >0 Then 실행문

Next rngC

End Sub


셀의 범위 구간을 지정하여 구간내에서 실행문을 실행하여 원하는 결과를 얻을 수 있습니다.

위의 반복문은 셀의 총 갯수가 11개 이므로 11번 반복해서 돌아가고 IF문 조건을 만족하는 결과를 산출합니다.

Range는 구간을 직접 지정할 수도 있고 Selection 으로 구간을 그때 그때 정할 수도 있습니다.


보통은 구간범위를 지정하여 반복수행하여 결과를 얻어냅니다.

Sub test()
    Dim rngC, rngAll As Range
   
    Application.ScreenUpdating = False
    Set rngAll = Range([A2], Cells(Rows.Count, "A").End(3))
    For Each rngC In rngAll
        '// 처리하고자 하는 내용을 IF문과 함께 처리
    Next rngC
    Set rngAll = Nothing    '// 메모리 비우기
    Application.ScreenUpdating = True
    MsgBox "처리완료"
End Sub


요소 rngC를 지정하는 것은 rngC 라고 하고, 어떤 사람은 C 라고 하고, rng 라고 하기도 하는 등 사람의 취향에 따라 다릅니다.


위 그림처럼 Worksheets 를 대상으로 처리하는 실행문을 구현하여 원하는 결과를 얻을 수도 있습니다.


Sub ShowName()
    Dim sht As Worksheet
    For Each sht In Worksheets
        MsgBox sht.Name, , "워크시트 이름"
    Next ws
End Sub



대략 어떻게 돌아가는 구나 정도 이해가 되었다면 예제 등을 통해서 자주 접하는 것이 원하는 걸 얻을 수 있는 지름길 입니다.

VBA 입문 과정에서는 고수들이 만든 VBA 코드를 복사하여 붙여넣기 한 다음에

F8키를 눌러가면서 의미를 파악하면서 하나 하나 내것으로 만들어가는 겁니다.




블로그 이미지

Link2Me

,