특정 소스를 반복해서 처리하고 싶을 때 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 셀 참조하는 여러가지 방법 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 배열 처리를 위한 Array 객체 사용하는 방법 (0) | 2024.05.27 |
---|---|
엑셀 VBA 옵션 버튼 OptionButton 컨트롤 사용하기 (0) | 2024.05.26 |
엑셀 VBA 매크로 실행 버튼으로 코드 실행하기 (2) | 2024.05.22 |
엑셀 VBA 카메라 기능을 매크로로 작성하기 (1) | 2024.05.20 |
엑셀 VBA 연도, 월, 일로 날짜를 생성하는 함수 DateSerial (0) | 2024.05.09 |
엑셀(VBA) Hour, Minute, Second 시간에서 시, 분, 초 추출 (0) | 2024.05.04 |
엑셀(VBA) Year, Month, Day 함수 연도, 월, 일 추출 (0) | 2024.05.04 |
엑셀 VBA 날짜 간 차이 함수 DateDiff 사용하기 (1) | 2024.05.02 |