엑셀 VBA의 배열 대신 Collection 두번째(For문, For~Each문과 결합한 Collection 활용)
[ 들어가며 ]
지난 블로그에서
Collection에 대한 기본 개념과
선언, 아이템의 추가 및 삭제,
그리고 아이템의 개수를 확인하는 방법을 알아보았습니다.
아래 링크를 참고하시면
지난 블로그를 확인하실 수 있습니다.
※ 엑셀 VBA의 배열 대신 Collection 첫번째(선언 및 아이템 추가, 삭제, 개수 확인)
오늘은
For문과 결합하여
Collection을 활용하는 방법을 알아보겠습니다.
[ For문 및 For Each문 을 사용하여 Collection 활용하기]
먼저 아래 코드를 샘플로 사용하겠습니다.
Sub Collection_Test()
Dim col As New Collection
col.Add "사과"
col.Add "배"
col.Add "오렌지"
col.Add "딸기", after:=1
col.Add "호박", before:=4
End Sub
Collection을 선언하고
그 안에
[ 사과, 딸기, 배, 호박, 오렌지 ]를 넣었습니다.
먼저 For Each를 사용하여
Collection의 아이템을 출력하는 방법입니다.
※ For Each 문에 대한 기본적은 설명은 여기를 참고하시면 됩니다.
Sub Collection_Test()
Dim col As New Collection
col.Add "사과"
col.Add "배"
col.Add "오렌지"
col.Add "딸기", after:=1
col.Add "호박", before:=4
Dim item As Variant
For Each item In col
Debug.Print item
Next item
End Sub
이 코드를 실행하면
col 변수의 값을 하나씩 item 변수에 넣어가며
직접실행창에 출력을 합니다.
For Each 문이 아닌
For문만을 사용한다면 아래와 같이 사용할 수 있습니다.
Sub Collection_Test()
Dim col As New Collection
col.Add "사과"
col.Add "배"
col.Add "오렌지"
col.Add "딸기", after:=1
col.Add "호박", before:=4
Dim i As Long
For i = 1 To col.Count
Debug.Print col(i)
Next i
End Sub
위 코드를 실행하면
아래 그림과 같이 실행 결과가 출력되며
그 내용은 앞선 코드 실행결과와 동일합니다.
만약 Collection의 모든 아이템을 가져오는 것이 아닌
짝수번째 아이템만 가지고 오고 싶다면
아래 코드와 같이 활용하는 것도 가능합니다.
Sub Collection_Test()
Dim col As New Collection
col.Add "사과"
col.Add "배"
col.Add "오렌지"
col.Add "딸기", after:=1
col.Add "호박", before:=4
Dim i As Long
For i = 2 To col.Count Step 2
Debug.Print col(i)
Next i
End Sub
위 코드는 두번째 아이템과 네번째 아이템만을 출력하며
그 결과는 아래 그림과 같습니다.
만약 아이템을 역순으로 출력하고 싶다면
아래 코드와 같이
For문을 활용하시면 됩니다.
Sub Collection_Test()
Dim col As New Collection
col.Add "사과"
col.Add "배"
col.Add "오렌지"
col.Add "딸기", after:=1
col.Add "호박", before:=4
Dim i As Long
For i = col.Count To 1 Step -1
Debug.Print col(i)
Next i
End Sub
위 코드를 실행하면
아래 그림과 같이
Collection의 아이템이 역순으로 출력이 됩니다.
[ 마치며 ]
오늘은 간단하게 Collection과
반복문 중에 For문 / For ~ Each문을 사용하여
Collection의 아이템을 출력하는 방법을 알아보았습니다.
Collection은 자료의 추가 삭제가 용이하고
배열에 비해 초보자가 사용하기 편한 부분이 많으니
많이 활용해 보시기 바랍니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.