제어문

For...Next 문

노만e 2025. 3. 17. 07:21

엑셀 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 문을 활용하면 반복적인 작업을 자동화할 수 있습니다! 🚀