본문 바로가기
IT 이모저모/VBA

VBA(엑셀 매크로) for, foreach(반복문) 활용법과 Continue와 break방법

by 내일은맑음 2020. 6. 13.
반응형

다른 언어와 마찬가지로 VBA에도 특정 실행처리를 반복하는 반복문이 있다.

바로 예시를 확인해보자

 

for문의 예시

Dim i As Integer '인덱스 변수

'Integer변수 i가 1부터 3까지 총 3번 실행
For i = 1 To 3
    Debug.Print(i) '인덱스 변수 i의 값을 출력
Next

위의 예시의 경우 i를 1씩 늘려가며 1부터 3까지 3회 실행된다.

결과는 1 2 3 이 출력된다.

 

i를 임의의 값으로 늘려서 반복문을 돌리고 싶다면 아래의 예시를 참고하면 된다.

Dim i As Integer

'i가 1부터 5까지 2씩 증가하며 실행된다. 
For i = 1 To 5 Step 2
    Debug.Print(i) ' 1 3 5를 출력
Next

'i가 3부터 1까지 -1씩 더해지며 실행된다.
For i = 3 To 1 Step -1
    Debug.Print(i) ' 3 2 1를 출력
Next

 위의 예시에서 첫번째 예시의 경우 i가 1 3 5로 2씩 증가하며 3회 실행된다.

두번째 예시의 경우 3 2 1로 -1씩 더해지며 총 3회 실행된다.

 

foreach의 예시

Dim item As Range '오브젝트 변수

'item에 A1부터 A3의 셀의 오브젝트을 넣는다. 총 3회 실행
For Each item In Range("A1:A3")
    Debug.Print(item.Address) 'A1부터 A3까지 셀의 위치를 출력
Next

For Each의 경우 In뒤에 있는 오브젝트 변수의 요소들을 순서대로 불러와 In 앞에 있는 변수에 대입한다.

 

반복문으로부터 break(빠져나오기)

Dim i As Integer

For i = 1 To 5
    If i = 3 Then 'i가 3인 경우
        Exit For  'For문을 빠져나온다
    End If

    Debug.Print(i) ' 1 2
Next
' Exit For 뒤에는 여기서부터 처리를 한다.

Exit For 를 하면 반복문으로 부터 빠져나올 수 있다. 

위의 예시의 경우 1 2 까지만 출력되고 3인 경우 Exit For로 인해 빠져나와서 출력이 멈춘다.

 

다음 실행 처리(Continue)

Dim i As Integer

For i = 1 To 3
    If i = 2 Then
        GoTo Continue ' Continue:가 쓰여 있는 줄로 이동
    End If
    
    Debug.Print(i) ' 1 3이 출력된다. i가 2인 경우 스킵되어 출력되지 않는다.
    
Continue: ' GoTo Continue 가 나오면 여기서부터 처리가 일어난다.
Next

GoTo continue를 만나면 Continue: 가 나올까지 다른 처리 조건을 무시하고 이동한다. 

그 뒤Continue: 부터 처리를 개시한다.

반응형