[ 들어가며 ]
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의 간단한 개념과
아이템 추가, 삭제, 개수 확인 방법에 대해 알아보았습니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA에서 시트에 접근하는 두가지 방법(시트이름, 코드네임) (0) | 2024.02.15 |
---|---|
엑셀 VBA의 배열 대신 Collection 두번째(For문, For~Each문과 결합한 Collection 활용) (0) | 2024.02.13 |
엑셀 VBA 단어 채우기, VBA 좀 더 편리하게 사용하기 (2) | 2024.01.31 |
엑셀 VBA 매크로 실행시간 계산하기, 매크로 실행에 걸리는 시간은?, Timer 함수 (0) | 2024.01.30 |
VBA With-End With 구문에 대한 기초 설명, With-End With 사용 방법 (1) | 2024.01.30 |