EXCEL VBA

엑셀 VBA의 배열 대신 Collection 두번째(For문, For~Each문과 결합한 Collection 활용)

카루루1007 2024. 2. 13. 13:45
728x90
반응형

[ 들어가며 ]

 

지난 블로그에서

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은 자료의 추가 삭제가 용이하고

배열에 비해 초보자가 사용하기 편한 부분이 많으니

많이 활용해 보시기 바랍니다.

 

여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.

엑셀 공부하기
VBA 공부하기

728x90
반응형