image

컬렉션은 배열처럼 (그러나 다른) 저장소 개체를 보유하는 데이터 유형입니다. 기본 VBA 코드를 작성하는 동안 통합 문서, 워크 시트, 범위 등을 사용해야합니다. 모두 모음입니다. 이 기사에서는 VBA 컬렉션에 대해 알아 봅니다.

VBA의 컬렉션이란 무엇입니까?

컬렉션은 배열과 마찬가지로 유사한 유형의 객체를 저장하는 데이터 유형입니다. 그러나 어레이와 달리 크기는 요구 사항에 따라 동적으로 늘리거나 줄일 수 있습니다.

컬렉션에서 항목을 추가, 찾기, 가져 오기 및 삭제할 수 있습니다.

배열과 달리 컬렉션의 항목 값을 변경할 수 없습니다. 원한다면 배열을 컬렉션의 항목으로 사용하십시오.

컬렉션에는 4 개의 속성 또는 메서드가 연결되어 있습니다.

Collection.Add

Collection.Item

Collection.Count

Collection.Remove

이 기사를 통해 이러한 속성의 사용을 살펴 보겠습니다.

VBA에서 컬렉션을 만드는 방법?

컬렉션은 객체이므로 선언하고 초기화해야합니다. VBA의 다른 개체와 마찬가지로 VBA에서 컬렉션을 만드는 두 가지 방법이 있습니다.

1. 즉시 생성

Dim items as new Collection

위의 방법에서는 객체가 즉시 생성됩니다. 이 컬렉션을 요구 사항에 즉시 사용할 수 있습니다.

image

2. 지연된 생성

Dim items as Collection

Set items = New Collection

이 방법에서는 먼저 컬렉션의 참조를 만들고 필요한 경우 컬렉션 개체로 초기화합니다. 이 방법을 사용하면 몇 가지 기준에 따라 컬렉션을 만들도록 선택할 수 있습니다.

image

컬렉션에 항목 추가 (Collection.Add)

Add 메서드를 사용하여 컬렉션에 새 항목을 추가합니다.

items.Add "Apples"

위의 코드는 컬렉션에 “Apples”문자열을 추가합니다.

items.Add 1.4

위의 코드는 컬렉션 끝에 1.4 배를 추가합니다.

image

이러한 항목에 대한 키를 정의 할 수도 있습니다. 이 키는 컬렉션의 항목에 액세스하는 데 사용할 수 있습니다.

image

컬렉션에 기존 항목 앞 또는 뒤에 항목 삽입

Add 메서드는 컬렉션 끝에 새 항목을 추가합니다. add 메소드에는 4 개의 매개 변수가 있습니다.

Add(item,[Key],[Before],[After])

첫 번째 인수가 필요합니다. 컬렉션에 추가하려는 개체 또는 개체입니다. 나머지 인수는 선택 사항입니다. 이 섹션에서 이러한 인수의 사용을 살펴 보겠습니다.

특정 인덱스 / 키 앞이나 뒤에 항목을 추가하려면 Add 메서드의 Before 및 After 매개 변수를 사용합니다.

items.Add True, "b", "cnst"

'Or

items.Add True, Before:="cnst"

두 줄 모두 VBA 컬렉션 항목에서 “cnst”키 앞에 부울 값을 삽입합니다.

수직 인덱스 / 항목 / 키 뒤에 항목을 삽입하려면 Add 메서드의 After 매개 변수를 사용합니다.

'inserting "Mango" with key "m" after key "cnst"

items.Add "Mango", Key:="m", after:="b"

위 줄은 키 “b”뒤에 “m”키와 함께 “Mango”를 삽입합니다.

image

참고 : * 항목의 키는 고유해야합니다. 컬렉션에 이미있는 키는 허용되지 않습니다. VBA는 “키가 이미이 컬렉션의 요소와 연결되어 있습니다”라는 오류를 반환합니다.

image

우리의 이점을 위해 이것을 사용할 수 있습니다.

컬렉션 항목 액세스 (Collection.Item)

컬렉션 항목에 액세스하는 방법에는 두 가지가 있습니다. . CollectionName ( “인덱스 / 키”)

  1. CollectionName.Item ( “인덱스 / 키”)

예를 들어, 인덱스 1 및 키 “apl”에있는 컬렉션 항목 *의 멤버에 액세스하려면 아래 VBA 코드를 사용할 수 있습니다.

Debug.Print items.Item(1)

--

Debug.Print items(1)

--

Debug.Print items.Item("apl")

--

Debug.Print items("apl")

image

컬렉션에서 항목 수를 얻는 방법은 무엇입니까? (Collection.Count)

컬렉션에있는 개체 또는 항목의 총 수를 얻으려면 컬렉션의 .Count 함수를 사용합니다. .Count 메서드는 컬렉션의 총 항목 수를 반환합니다.

items.Count

위 줄은 컬렉션에있는 개체 수를 제공합니다.

컬렉션의 모든 항목에 액세스하는 방법은 무엇입니까?

VBA에서 컬렉션의 모든 항목에 액세스하는 유일한 방법은 루프입니다.

컬렉션의 각 항목을 반복하여 액세스합니다. 이를 위해 우리는 for 루프를 사용합니다. for-each 루프는 컬렉션 개체에 액세스하는 가장 빠르고 깨끗한 방법으로 간주됩니다.

VBA에서 컬렉션 루핑

VBA에서 컬렉션을 반복하는 방법에는 여러 가지가 있습니다. 컬렉션을 반복하기 위해 각 루프에 가장 우아하게 사용할 것입니다.

컬렉션의 각 항목을 너무 반복하여이 VBA 코드 줄을 사용하십시오.

For Each itm In items

Debug.Print itm

Next itm

image

컬렉션에서 항목 제거 (Collection.Remove)

vba 컬렉션에서 항목을 제거하려면 Remove 메서드를 사용할 수 있습니다. remove 메소드는 하나의 인수를 사용합니다. 항목의 색인 또는 키일 수 있습니다 (사용 가능한 경우).

items.Remove (1) 'using index

--

items.Remove 1

--

items.Remove ("apl") 'using key

--

items.Remove "apl"

VBA에서 컬렉션 삭제

음, vba에서 컬렉션을 삭제할 수 없습니다. 그러나 새 컬렉션으로 다시 설정하여 해당 컬렉션의 모든 항목을 제거 할 수 있습니다.

Set items = New Collection

이 코드 줄은 항목 주소에 대한 새 컬렉션을 만듭니다.

따라서 우리의 컬렉션은 비워 질 것입니다.

image

VBA의 배열 대 컬렉션

  1. Array size is predefined. The size of array can not be changed

normally.

  1. Array’s can hold only same type of data and the type must be declared

first.

  1. Indexing in array starts from 0

  2. Array members does not have any associated key.

  3. Arrays are mutable. You can change the values of its members.

  1. Collection’s size changes as items are added or removed.

  2. A collection can hold any number of data type. As you have seen in the

above examples.

  1. Indexing in VBA Collection starts from 1.

  2. Collection members can have keys associated with.

  3. Collections are immutable. You cannot change values of its member

directly.

네, 여러분, 이것이 컬렉션의 기본입니다. Office 도구에는 VBA 컬렉션의 많은 이점과 용도가 있습니다. 우리는 그것들을 함께 탐구 할 것입니다. 그때까지 컬렉션이나 Excel / VBA와 관련된 질문이 있으면 아래 댓글 섹션에 적어 두십시오.