Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 반복문 For Next 문 사용하기

엑셀(Excel)/VBA
반응형

특정 소스를 반복해서 처리하고 싶을 때 For 반복문을 사용합니다. For 문은 시작값과 증가값 종료값으로 구성되어 있습니다. 시작값은 설정한 증가값을 계속 더해서 종료값보다 커지는 순간 끝나는 구조입니다.

 

 

 

 

1. For Next 반복문 형식

 

 

VBA 에서 반복 구문인 For Next 의 형식은 다음과 같습니다. 지정한 횟수 만큼 명령문을 반복하기 위해 사용합니다. 증가값은 사용자가 지정할 수 있으며, 음수(-) 값으로 감소시키는 것도 가능합니다.

For 계산변수 = 시작값 To 종료값 [Step 증가값]
   [명령문]
   [Exit For]
   [명령문]
Next [계산변수]

  

 

 

2. 초기값, 종료값으로 반복문 사용하기

 

 

For Next 반복문에서 증가값인 Step 을 지정하지 않으면 1 을 적용합니다. 아래 샘플은 1 씩 증가시킨 값을 출력하고 합계를 구해서 마지막 셀에 추가하는 소스입니다.

 

Sub Input_Click_1()
    Dim i As Integer
    Dim total As Integer
    Dim sumdata As Integer
    
    total = 10
    
    '' 1 만큼 증가
    For i = 1 To total
        Cells(i, 1) = i
        sumdata = sumdata + i
    Next
    
    Debug.Print sumdata
    
    Cells(total + 1, 1) = "SUM = " & sumdata
End Sub

 

그림에 버튼을 누르는 순간 셀 값을 읽어서 합계를 표시합니다.

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 매크로 실행 버튼으로 코드 실행하기
엑셀 VBA 개발을 위한 개발 도구 추가하는 방법
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 VBA 개발 도구를 이용해서 버튼 삽입하고 함수 연결하기
셀 VBA 참조하는 여러가지 방법

 

 

 

3. 반복문 증가값 지정하기

 

 

다음은 증가값을 사용자가 지정한 경우입니다. Step 다음에 입력한 숫자만큼 i 값이 증가하므로 위의 샘플소스와 달리 한칸씩 건너 뛰면서 읽습니다.

Sub Input_Click_2()
    Dim i As Integer
    Dim total As Integer
    Dim sumdata As Integer
    
    total = 10
    
    '' 2 만큼 증가
    For i = 1 To total Step 2
        Cells(i, 1) = i
        sumdata = sumdata + i
    Next
    
    Debug.Print sumdata
    
    Cells(total + 1, 1) = "SUM = " & sumdata
End Sub

  

 

 

4. 증가값 음수지정 하기

 

 

초기값이 종료값보다 큰 경우 증가값을 음수로 지정해서 반복하는 샘플입니다. 시작값을 줄이면서 반복하고 싶을 때 사용하는 방법입니다. 

Sub Input_Click_3()
    Dim i As Integer
    Dim total As Integer
    Dim sumdata As Integer
    
    total = 10
    
    '' 증감 -1
    For i = total To 1 Step -1
        Cells(i, 1) = i
        sumdata = sumdata + i
    Next
    
    Debug.Print sumdata
    
    Cells(total + 1, 1) = "SUM = " & sumdata
End Sub

 

 

 

5. 반복문 중첩 지정하기

 

 

For Next 문에서 Next 뒤에는 반복 변수값이 들어갑니다. 하지만 보통 생략합니다. 만약 중복해서 For Next 를 지정하고 싶다면 해당 영역에 반복 변수값은 구분을 위해서 Next 뒤에 지정해야 합니다. 

Sub Input_Click_4()
    Dim i As Integer
    Dim co As Integer
    Dim sumdata As Integer
    
    '' 중복 For Next 문
    For i = 1 To 3
        For j = 1 To 5
            co = co + 1
            Cells(co, 1) = co
            
            sumdata = sumdata + co
        Next j
    Next i
    
    Cells(co + 1, 1) = "SUM = " & sumdata
End Sub

 

 

 

6. Exit for 문으로 반복문 빠져나가기

 

 

For Next 반복문을 끝나지 진행하지 않고 특정 조건이 되었을 때 빠져나오는 방법은 Exit For 구분을 사용하는 것입니다. 아래 샘플에서는 특정 조건이 되었을 때 For Next 를 종료하기 위해 If 함수를 사용했습니다. 

Sub Input_Click_5()
    Dim i As Integer
    Dim total As Integer
    Dim sumdata As Integer
    
    total = 10
    
    '' 함수 빠져 나가기
    For i = 1 To total
        If sumdata > 30 Then
            Exit For
        End If
        
        Cells(i, 1) = i
        sumdata = sumdata + i
    Next i
    
    Cells(total + 1, 1) = "SUM = " & sumdata
    
End Sub

 

그림에서 보듯이 합계값이 30 이상인 9 가 되기 전 8까지 반복하고 종료한 결과입니다.

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 매크로 실행 버튼으로 코드 실행하기
엑셀 VBA 개발을 위한 개발 도구 추가하는 방법
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 VBA 개발 도구를 이용해서 버튼 삽입하고 함수 연결하기
셀 VBA 참조하는 여러가지 방법
반응형
Posted by 녹두장군

댓글을 달아 주세요