(VBA) 반복문 중 "For Each" 알아보기 - For Each, Next
본문 바로가기
목표는!!퇴근!! (엑셀VBA)

(VBA) 반복문 중 "For Each" 알아보기 - For Each, Next

by 종닭이 2023. 8. 8.
728x90
반응형

(VBA) 반복문 중 "For Each" 알아보기 - For Each, Next

🔃 For Each문 구조
For Each [변수] In [모든 객체]
    [명령어]
Next

For문은 숫자로 반복 횟수를 설정해서 반복을 한다면

For Each는 객체나 배열을 순차적으로 반복을 합니다

(말이 좀 어렵네요.....)

 

🔃 생성된 전체 시트 이름 알아보기
Private Sub CommandButton1_Click()

    Dim WS As Worksheet
    
    For Each WS In Worksheets
        Debug.Print WS.Name
    Next
End Sub

시트 이름 알아보기
생성된 전체 시트

보시면 [변수]는 Worksheet 

[모든 객체]는 Worksheets

영어는 잘 모르지만 뒤에 "s"가 붙으면 복수이므로

[모든 객체]에서 시트 하나하나씩 [변수]에 담으면서 반복합니다

 

🔃 배열 모든 값 알아보기
Private Sub CommandButton1_Click()

    Dim STR As Variant
    Dim Arr() As Variant
    
    Arr = Array("이름", "전화번호", "주소")
    
    For Each STR In Arr
        Debug.Print STR
    Next
    
End Sub

배열 값 알아보기

For Each문에 사용하는 변수는 무조건 Variant 형식으로 설정해야 하네요

변수 형식 에러

🔃 For Each문 빠져나오기 (Exit For)
Private Sub CommandButton1_Click()

    Dim STR As Variant
    Dim Arr() As Variant
    
    Arr = Array("이름", "전화번호", "주소")
    
    For Each STR In Arr
        Debug.Print STR
        Exit For
    Next
    
End Sub

Exit For 사용하기

Exit For를 사용해서 반복문에서 빠져나올 수 있습니다

 

For Each문은 그냥 For문처럼 증가치, 감소치를 설정할 수 없습니다

한쪽 방향으로 만 순차적으로 반복된다고 보시면 됩니다

 

 

⛔ 반복문 사용 시 주의점 ⛔

만약 Exit For나 Exit Do처럼 반복문을 중단하는 명령어가 없는 경우
무한 반복에 빠질 수 있습니다
그럴 경우 ESC나 Ctrl + Pause Break로 멈출 수도 있지만 만약에 이걸로도 멈추지 않는다면
어쩔 수 없이 강제 종료해야 합니다
Ctrl + Alt + Del -> 엑셀 강제 종료
저장이 안 되어있으면.... 큰일 납니다
반복문은 실행하기 전 꼭 조건을 확인하시고 실행해 주세요

 

728x90
반응형