EXCEL VBA

엑셀 VBA의 배열 대신 Collection 첫번째(선언 및 아이템 추가, 삭제, 개수 확인)

카루루1007 2024. 2. 1. 15:54
728x90
반응형

[ 들어가며 ]

 

VBA에는 Collection이라는 개념이 있습니다.

배열과 유사하지만 다른

유사한 객체나 항목의 그룹을 참조하는 데 사용되는 개체입니다.

 

 

[ Collection의 크기는 동적 ]

 

Collection의 특징 중 하나

그 크기가 동적이라는 것입니다.

 

배열은 그 크기가 정적, 즉 미리 정해지고 시작하기에

크기를 바꾸기가 어렵습니다

 

하지만 Collection의 경우 그 크기가 미리 정해지지 않았기 때문에

프로그램의 실행 중간에도 그 크기를 바꿀 수 있습니다.

 

따라서 Collection의 경우

항목의 크기를 예측하기 어렵고

항목의 추가 및 삭제가 빈번하게 발생하는 경우에 효과적입니다.

 

[ Collection의 선언 방법 ]

 

Collection을 사용하기 위해서는

Collection을 먼저 선언해 주어야 합니다.

 

Sub Collection_Test()

    Dim col As New Collection
    
End Sub

또는

Sub Collection_Test()

    Dim col As Collection
    Set col = New Collection
    
End Sub

 

두 코드는 표현의 방식만 다를 뿐

기능적으로 동일한 역할을 합니다.

 

어떤 코드를 사용하셔도 동일하므로

선호에 맞는 형태로 사용하시면 됩니다.

반응형

 

[ 아이템 추가하기 ]

 

Collection에 아이템을 추가하기 위해서는 

Add를 사용하면 됩니다.

Sub Collection_Test()

    Dim col As New Collection
    
    col.Add "사과"
    col.Add "배"
    
End Sub

 

이렇게 하고 VBA의 [ 지역 ]창을 살펴보면

아래 그림과 같이

[ 사과, 배 ]가 추가된 것을 확인할 수 있습니다.

 

배열은 보통 같은 형태의 데이터를 가지고 있습니다.

하지만 Collection의 경우

다른 형태의 데이터를 가질 수 있습니다.

Sub Collection_Test()

    Dim col As New Collection
    
    col.Add "사과"
    col.Add "배"
    col.Add 45
    
End Sub

[ 사과, 배 ]의 경우 String

[ 45 ]의 경우 Integer로 

그 형태가 다름을 알 수 있습니다.

 

만약 [ 사과 ] 다음에 데이터를 추가하고 싶다면

[ After:= ]를 사용하시면 됩니다.

[ 사과 ] 다음에 [ 딸기 ]를 추가해 보겠습니다.

Sub Collection_Test()

    Dim col As New Collection
    
    col.Add "사과"
    col.Add "배"
    col.Add 45
    col.Add "딸기", after:=1
    
End Sub

이렇게 코드를 작성하고 실행하면

기존의 

[ 사과, 배, 45 ]가 [ 사과, 딸기, 배, 45 ]로 바뀌게 됩니다.

 

참고로 배열의 첫 시작은 [ 0 ]이지만,

Collcetion의 첫 시작은 [ 1 ]입니다.

 

이와 유사하게

어떤 데이터 앞에 다른 데이터를 추가하고 싶다면

[ Before:= ]를 사용하시면 됩니다.

Sub Collection_Test()

    Dim col As New Collection
    
    col.Add "사과"
    col.Add "배"
    col.Add 45
    col.Add "딸기", after:=1
    col.Add "호박", before:=4
        
End Sub

 

기존 데이터는

[ 사과, 딸기, 배, 45 ]였으며,

4번째 데이터 [ 45 ]앞에

[ 호박 ]을 추가하게 되면

[ 사과, 딸기, 배, 호박, 45 ]로 데이터가 바뀌게 됩니다.

 

[ Collection의 아이템 개수 확인하기 ]

 

Collection의 아이템 개수를 확인하는 방법은 간단합니다.

count를 사용하면 됩니다.

메시지 박스에 Collection의 아이템 개수를 띄워보겠습니다.

Sub Collection_Test()

    Dim col As New Collection
    
    col.Add "사과"
    col.Add "배"
    col.Add 45
    col.Add "딸기", after:=1
    col.Add "호박", before:=4
        
    MsgBox "Number of Items is " & col.Count
    
End Sub

이 코드의 실행 결과는 다음과 같습니다.

 

 

[ Collection 항목 제거하기 ]

 

Collection의 항목을 제거하는 방법 역시

매우 간단합니다.

Remove를 사용하시면 됩니다.

Sub Collection_Test()

    Dim col As New Collection
    
    col.Add "사과"
    col.Add "배"
    col.Add 45
    col.Add "딸기", after:=1
    col.Add "호박", before:=4
    
    col.Remove 1
            
    MsgBox "Number of Items is " & col.Count
    
End Sub

 

위 코드에서

col.Remove 1

을 사용해 첫 번째 아이템 [ 사과 ]를 지워보겠습니다.

 

이제 첫번째 아이템이 [ 딸기 ]가 되었습니다.

여기서 두 번째 아이템을 다시 지우게 되면

[ 딸기 ]가 지워지는 것이 아니라

[ 배 ]가 지워지게 됩니다.

 

이번 블로그에서는

Collection의 간단한 개념과

아이템 추가, 삭제, 개수 확인 방법에 대해 알아보았습니다.

 

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

엑셀 공부하기
VBA 공부하기

728x90
반응형