Как да използвате VBA колекции в Excel

Anonim


Колекцията е тип данни, който съхранява обекти, същите като масиви (но различни). Докато пишете основни VBA кодове, трябва да сте използвали работни книги, работни листове, диапазони и т.н. Всички те са колекции. В тази статия ще научим за VBA колекциите.
Какво е колекция във VBA?
Колекцията е тип данни, който съхранява подобен тип обекти, точно като масиви.

Но за разлика от масивите, размерът му може да се увеличава или намалява динамично според изискванията.

Можете да добавяте, намирате, извличате и изтривате елементи от колекции.

За разлика от масивите, не можете да променяте стойностите на елементите в колекциите. Ако искате така, използвайте масиви като елемент в колекцията.

Една колекция има 4 свойства или методи, свързани с нея.

 Колекция.Добавяне на колекция 

Чрез тази статия ще разгледаме използването на тези свойства.
Как да създадете колекция във VBA?
Колекцията е обект, затова е необходимо да се декларира и инициализира. Както всеки друг обект във VBA, има два метода за създаване на колекция във VBA.
1. Незабавно създаване

Затъмнете артикулите като нова колекция

В горния метод обектът се създава незабавно. Можете веднага да започнете да използвате тази колекция за вашите изисквания.

2. Забавено създаване

 Затъмнете елементите като елементи от колекцията = Нова колекция 

В този метод първо създаваме препратка към колекция и когато е необходимо, инициализираме с обект на колекция. Използвайки този метод, можете да изберете да създадете колекцията въз основа на някои критерии.

Добавяне на елементи към колекция (Collection.Add)
Използваме метод Add за добавяне на нови елементи в колекция.

items.Add "Apples"

Горният код ще добави низ "Ябълки" в колекцията.

Добавете 1.4

Горният код ще добави двойно 1.4 към края на колекцията.

Можем също да дефинираме ключове за тези елементи. Тези ключове могат да се използват за достъп до елементите в колекцията.

Вмъкване на елементи в колекция преди или след съществуващ елемент

Методът Add добавя нови елементи в края на колекцията.

Методът на добавяне има четири параметъра.

Добавяне (елемент, [Ключ], [Преди], [След])

Първият аргумент е необходим. Това е обектът или искате да добавите в колекцията. Останалите аргументи не са задължителни. Ще видим използването на тези аргументи в този раздел.

Ако искаме да добавим някой елемент преди или след някакъв перикуларен индекс/ключ, тогава използваме параметрите преди и след метода на добавяне.

items.Add True, "b", "cnst" 'Или items.Add True, Before: = "cnst"

И двата реда ще вмъкнат булева стойност преди ключ "cnst" в елементите на VBA Collection.

За да вмъкнем елемент след пертикуларен индекс/елемент/ключ използваме параметър After на метода Add.

'вмъкване на "Манго" с ключ "m" след елементи от "cnst". Добавете "Манго", Ключ: = "m", след: = "b"

Горният ред ще вмъкне „Манго“ с ключ „m“ след клавиш „b“.

Забележка: Ключовете на елементите трябва да са уникални. Всеки ключ, който вече съществува в колекцията, няма да бъде приет. VBA ще върне грешка, че „ключът вече е свързан с елемент от тази колекция“.

Можем да използваме това за наше предимство, за да получим уникален списък от колекцията.
Достъп до колекции (Collection.Item)

Има два метода за достъп до елементите на колекция.

  1. CollectionName ("индекс/ключ")
  2. CollectionName.Item ("индекс/ключ")

Например за достъп до член в колекция елементи в индекс 1 и ключ "apl", мога да използвам някой от кодовете по -долу VBA.

Debug.Print items.Item (1) - Debug.Print items (1) - Debug.Print items.Item ("apl") - Debug.Print items ("apl")


Как да изчислим броя на артикулите в колекция? (Колекция. Брой)
За да получим общ брой обекти или елементи в колекция, използваме функцията .Count на колекцията. Методът .Count връща общия брой елементи в колекцията.

 бройки

Горният ред ще даде броя обекти, които колекцията има.

Как да получите достъп до всички елементи от колекция?

Единственият начин за достъп до всички елементи от колекцията във VBA е цикли. Повтаряме всеки елемент от колекцията за достъп до тях. За това използваме for цикъл. Цикълът за всеки се счита за най-бързия и чист начин за достъп до обекти за събиране.
Превръщане през колекция във VBA

Има различни начини да преминете през колекцията във VBA. Ще използваме най -елегантното за всеки цикъл, за да прегледаме колекцията.

Твърде циклично през всеки елемент от колекция просто използвайте този ред от VBA код.

За всеки itm В елементи Debug.Print itm Next itm


Премахване на елементи от колекция (Collection.Remove)

За да премахнем елемент от колекция vba, можем да използваме метода Remove. Методът remove отнема един аргумент. Това може да бъде индексът или ключът на елемента (ако има такъв).

items.Remove (1) 'с помощта на index - items.Remove 1 - items.Remove ("apl")' с помощта на key - items.Remove "apl"

Изтриване на колекция във VBA

Е, не можете да изтриете колекция във vba. Можете обаче да премахнете всички елементи от тази колекция, като я зададете отново като нова колекция.

Задаване на елементи = Нова колекция

Този ред код ще създаде нова колекция за адреса на артикулите. Следователно нашата колекция ще бъде изпразнена.

Масив срещу колекция във VBA

    Масив

  1. Размерът на масива е предварително зададен. Размерът на масива не може да се променя нормално.
  2. Масивите могат да съдържат само един и същи тип данни и типът трябва първо да бъде деклариран.
  3. Индексирането в масива започва от 0
  4. Членовете на масива нямат свързан ключ.
  5. Масивите са променливи. Можете да промените стойностите на членовете му.

    колекция

  1. Размерът на колекцията се променя, когато елементите се добавят или премахват.
  2. Една колекция може да съдържа произволен брой тип данни. Както видяхте в горните примери.
  3. Индексирането във VBA Collection започва от 1.
  4. Членовете на колекцията могат да имат ключове, свързани с.
  5. Колекциите са неизменни. Не можете да променяте стойностите на неговия член директно.

Така че да, момчета, това са основите на колекциите. Има много предимства и приложения на VBA колекцията в офис инструментите. Ще ги изследваме заедно. Дотогава, ако имате въпроси относно събирането или нещо свързано с Excel/VBA, напишете в секцията за коментари по -долу.