엑셀 VBA에서 For 문은 반복적으로 특정 작업을 수행할 때 사용됩니다.
즉, 코드를 여러 번 실행하거나, 일정한 규칙으로 값들을 처리할 때 유용합니다.
1. 기본 문법
(1) For...Next 문
For 변수 = 시작값 To 종료값 [Step 증가값]
' 반복할 코드
Next 변수
|
- 변수 → 반복을 제어하는 변수
- 시작값 → 반복을 시작할 값
- 종료값 → 반복이 끝나는 값
- Step 증가값 (선택 사항) → 반복 시 변수의 증가 값 (기본값: 1)
2. 기본 사용 예제
Sub 기본_For()
Dim i As Integer
For i = 1 To 5
MsgBox "반복 횟수: " & i
Next i
End Sub
|
📌 출력: "반복 횟수: 1", "반복 횟수: 2", ..., "반복 횟수: 5"
📌 1부터 5까지 반복 실행
3. 셀 값 채우기 (For...Next 활용)
Sub 셀값_채우기()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = "행 " & i
Next i
End Sub
|
📌 A1~A10에 "행 1", "행 2", ..., "행 10" 입력
4. 역순 반복 (Step -1 사용)
Sub 역순_For()
Dim i As Integer
For i = 10 To 1 Step -1
Debug.Print "카운트다운: " & i
Next i
End Sub
|
📌 출력 (즉, Immediate 창에 표시됨):
카운트다운: 10
카운트다운: 9
...
카운트다운: 1
|
📌 10부터 1까지 감소하면서 반복 실행
5. 짝수 또는 특정 간격으로 반복 (Step 사용)
Sub 짝수반복()
Dim i As Integer
For i = 2 To 10 Step 2
Debug.Print "짝수: " & i
Next i
End Sub
|
📌 출력: 짝수: 2, 짝수: 4, 짝수: 6, 짝수: 8, 짝수: 10
📌 Step 값으로 2를 지정하여 짝수만 반복
6. 배열 요소 출력 (For...Next 활용)
Sub 배열_For()
Dim arr As Variant
Dim i As Integer
arr = Array("사과", "바나나", "포도", "딸기")
For i = LBound(arr) To UBound(arr)
Debug.Print "과일: " & arr(i)
Next i
End Sub
|
📌 출력: "과일: 사과", "과일: 바나나", "과일: 포도", "과일: 딸기"
📌 배열의 모든 요소를 For 문으로 출력 (LBound와 UBound 사용)
7. For Each 문 (컬렉션 반복)
Sub ForEach_셀반복()
Dim cell As Range
For Each cell In Range("A1:A5")
cell.Value = "안녕하세요!"
Next cell
End Sub
|
📌 A1:A5 범위의 모든 셀에 "안녕하세요!" 입력
📌 For Each 문을 사용하면 For 문보다 직관적이고 가독성이 좋음
8. 시트 내 모든 셀에 특정 값 찾기 (For Each 활용)
Sub 특정값_찾기()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
If cell.Value = "찾기" Then
cell.Interior.Color = RGB(255, 255, 0) ' 노란색
End If
Next cell
End Sub
|
📌 현재 사용 중인 시트에서 "찾기"라는 값이 있는 셀을 노란색으로 변경
9. 중첩 For 문 (2차원 반복)
Sub 중첩_For()
Dim i As Integer, j As Integer
For i = 1 To 3
For j = 1 To 3
Cells(i, j).Value = i * j
Next j
Next i
End Sub
|
📌 A1:C3에 구구단 형태로 값 입력 (1×1, 1×2, ... 3×3)
10. 이중 For 문을 사용한 표 색칠
Sub 표색칠()
Dim i As Integer, j As Integer
For i = 1 To 5
For j = 1 To 5
Cells(i, j).Interior.Color = RGB(200, 200, 255) ' 연한 파란색
Next j
Next i
End Sub
|
📌 A1:E5 영역을 연한 파란색으로 채우기
11. 동적 범위 처리 (For Each 활용)
Sub 동적범위_ForEach()
Dim cell As Range
For Each cell In Range("A1").CurrentRegion
If cell.Value = "" Then
cell.Value = "N/A"
End If
Next cell
End Sub
|
📌 데이터가 있는 영역(CurrentRegion)에서 빈 셀을 "N/A"로 변경
📝 정리
기능
|
VBA 코드
|
기본 For 문
|
For i = 1 To 5 : Next i
|
셀 값 채우기
|
Cells(i, 1).Value = "행 " & i
|
역순 반복 (Step -1)
|
For i = 10 To 1 Step -1 : Next i
|
짝수 반복 (Step 2)
|
For i = 2 To 10 Step 2 : Next i
|
배열 요소 반복
|
For i = LBound(arr) To UBound(arr) : Next i
|
For Each 문
|
For Each cell In Range("A1:A10") : Next cell
|
중첩 For 문 (2차원)
|
For i = 1 To 3 : For j = 1 To 3 : Next j, Next i
|
표 색칠
|
Cells(i, j).Interior.Color = RGB(200, 200, 255)
|
동적 범위 처리
|
For Each cell In Range("A1").CurrentRegion : Next cell
|
🔥 VBA의 For 문을 활용하면 반복적인 작업을 자동화할 수 있습니다! 🚀