1. VBA의 For Each...Next 문 개요
For Each...Next 문은 VBA에서 컬렉션이나 배열의 각 요소를 순회(iterate)할 때 사용하는 반복문입니다. 기본적인 For Next 문과 달리, 인덱스를 직접 조작하지 않고 컬렉션 내의 각 항목을 자동으로 참조할 수 있어 코드가 간결하고 가독성이 좋습니다.
1. For Each...Next 문법
Dim 변수 As 자료형
For Each 변수 In 컬렉션_또는_배열
' 실행할 코드
Next 변수
- 변수는 컬렉션 또는 배열의 개별 요소를 나타내는 변수입니다.
- 컬렉션_또는_배열은 반복할 대상이 되는 컬렉션(Collection) 또는 배열(Array)입니다.
- Next 변수에서 변수는 선택 사항이며, 단순히 Next만 사용해도 됩니다.
2. For Each...Next의 활용 예제
1. 워크시트의 모든 셀을 탐색하는 예제
Sub ForEachExample1()
Dim cell As Range
For Each cell In Range("A1:A5")
cell.Value = "Hello"
Next cell
End Sub
- Range("A1:A5")의 모든 셀을 cell 변수에 하나씩 할당하며 반복합니다.
- 각 셀에 "Hello" 값을 입력합니다.
2. 워크시트의 모든 시트를 탐색하는 예제
Sub ForEachExample2()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
MsgBox ws.Name
Next ws
End Sub
- ThisWorkbook.Sheets 컬렉션 내 모든 시트를 ws 변수로 하나씩 순회.
- 각 시트의 이름을 MsgBox로 표시한다.
3. 배열의 모든 요소를 순회하는 예제
Sub ForEachExample3()
Dim arr As Variant
Dim element As Variant
arr = Array("사과", "바나나", "체리")
For Each element In arr
Debug.Print element
Next element
End Sub
- arr 배열에 "사과", "바나나", "체리" 값을 할당합니다.
- For Each 문을 이용해 배열의 각 요소를 Debug.Print로 출력합니다.
For Each...Next vs For Next
비교 항목 | Each...Next | For For Next |
사용 대상 | 컬렉션, 배열 | 주로 숫자 기반 반복 |
속도 | For Next보다 조금 느릴 수 있음 | 일반적으로 빠름 |
가독성 | 더 직관적 | 상대적으로 코드가 길어질 수 있음 |
배열 사용 | Variant 타입 변수 필요 | 인덱스를 직접 사용 |
For Each...Next 사용 시 주의점
- 배열을 사용할 때는 Variant 타입으로 선언해야 합니다.
- For Each 문은 Variant 형식의 배열에서만 정상적으로 동작합니다.
- 정수형 배열이나 문자열 배열의 경우 For Each 문을 사용할 수 없습니다.
- 객체를 다룰 때 유용합니다.
- For Each는 Worksheets, Range, Shapes 같은 객체 컬렉션을 반복할 때 매우 효과적입니다.
- 컬렉션의 요소를 삭제하거나 수정할 때 주의해야 합니다.
- For Each를 실행하는 중에 컬렉션의 요소를 삭제하면 예기치 않은 오류가 발생할 수 있습니다.
For Each...Next 문은 VBA에서 컬렉션이나 배열을 쉽게 순회할 수 있는 반복문으로, 가독성이 뛰어나고 실용적입니다. 특히 워크시트, 셀, 차트, 도형 등의 객체를 다룰 때 매우 효과적이며, 불필요한 인덱스 변수를 사용하지 않아 코드가 깔끔해집니다.
'VBA' 카테고리의 다른 글
VBA 에러 처리하기 (0) | 2025.03.12 |
---|---|
VBA Do ~ While 문으로 반복 (0) | 2025.03.07 |
VBA For ~ Next 문으로 반복 실행하기 (0) | 2025.02.28 |
VBA Selet Case 문 사용법 및 예제 (0) | 2025.02.15 |
엑셀(Excel) VBA GoTo 문으로 이동하기 (0) | 2025.02.09 |