Kaip naudoti „VBA“ kolekcijas „Excel“

Anonim


Kolekcija yra duomenų tipas, kuriame saugomi objektai, kaip ir masyvai (bet skirtingi). Rašydami pagrindinius VBA kodus, turite naudoti darbaknyges, darbalapius, diapazonus ir tt. Jie visi yra kolekcijos. Šiame straipsnyje mes sužinosime apie VBA kolekcijas.
Kas yra kolekcija VBA?
Kolekcija yra duomenų tipas, kuriame saugomi panašaus tipo objektai, kaip ir masyvai.

Tačiau, skirtingai nei masyvai, jo dydį galima dinamiškai padidinti arba sumažinti pagal poreikį.

Galite pridėti, rasti, gauti ir ištrinti elementus iš kolekcijų.

Skirtingai nuo masyvo, jūs negalite pakeisti kolekcijų elementų reikšmių. Jei norite, naudokite masyvus kaip kolekcijos elementą.

Kolekcija turi 4 savybes ar metodus, susijusius su ja.

 Collection.Add Collection.Item Collection.Count Collection.Remove 

Šiame straipsnyje apžvelgsime šių savybių naudojimą.
Kaip sukurti kolekciją VBA?
Kolekcija yra objektas, todėl ją reikia deklaruoti ir inicijuoti. Kaip ir bet kuris kitas VBA objektas, kolekcijoje VBA yra du būdai.
1. Momentinis kūrimas

Išblukinkite elementus kaip naują kolekciją

Naudojant aukščiau aprašytą metodą, objektas sukuriamas akimirksniu. Galite nedelsdami pradėti naudoti šią kolekciją pagal savo poreikius.

2. Uždelsta kūryba

 Pritemdyti elementus kaip kolekcijos rinkinio elementus = Nauja kolekcija 

Šiuo metodu pirmiausia sukuriame kolekcijos nuorodą ir, kai reikia, inicijuojame kolekcijos objektą. Naudodami šį metodą galite pasirinkti sukurti kolekciją pagal tam tikrus kriterijus.

Elementų pridėjimas prie kolekcijos (Collection.Add)
Norėdami pridėti naujų elementų prie kolekcijos, naudojame metodą „Pridėti“.

elementus. Pridėti „Obuoliai“

Aukščiau pateiktas kodas kolekcijoje pridės eilutę „Obuoliai“.

elementus. Pridėti 1.4

Aukščiau pateiktas kodas surinkimo pabaigoje pridės dvigubą 1,4.

Taip pat galime apibrėžti šių elementų raktus. Šiais raktais galima pasiekti kolekcijos elementus.

Daiktų įterpimas į kolekciją prieš arba po esamo elemento

Pridėjimo metodas prideda naujų elementų kolekcijos pabaigoje.

Pridėjimo metodas turi keturis parametrus.

Pridėti (elementas, [raktas], [prieš], [po])

Pirmasis argumentas yra būtinas. Tai objektas, kurį norite įtraukti į kolekciją. Poilsio argumentai yra neprivalomi. Šiame skyriuje pamatysime šių argumentų naudojimą.

Jei norime pridėti elementą prieš arba po tam tikro rodiklio/rakto, tada naudojame metodo „Add“ parametrus prieš ir po.

items.Add True, "b", "cnst" 'Arba items. Add True, Before: = "cnst"

Abi eilutės įterps loginę vertę prieš raktą „cnst“ VBA kolekcijos elementuose.

Norėdami įterpti elementą po tinklinio indekso/elemento/rakto, naudojame metodo „Pridėti“ parametrą „After“.

"po rakto" cnst "elementų įterpiant" Mango "klavišu" m ". Pridėti" Mango ", raktas: =" m ", po: =" b "

Virš eilutės po klavišo „b“ bus įterptas „Mango“ su raktu „m“.

Pastaba: Daiktų raktai turi būti unikalūs. Bet koks kolekcijoje esantis raktas nebus priimtas. VBA grąžins klaidą, kad „raktas jau susietas su šios kolekcijos elementu“.

Mes galime tai panaudoti savo naudai, kad gautume unikalų kolekcijos sąrašą.
Prieiga prie kolekcijos elementų (Collection.Item)

Yra du būdai, kaip pasiekti kolekcijos elementus.

  1. CollectionName („indeksas/raktas“)
  2. CollectionName.Item ("indeksas/raktas")

Pavyzdžiui, norint pasiekti kolekcijos narį elementus 1 indekse ir raktu „apl“ galiu naudoti bet kurį iš žemiau esančių VBA kodų.

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


Kaip suskaičiuoti kolekcijos elementų skaičių? [Collection.Count]
Norėdami gauti bendrą kolekcijos objektų ar elementų skaičių, naudojame kolekcijos funkciją. .Skaičiavimo metodas grąžina bendrą kolekcijos elementų skaičių.

 elementų.Skaičius

Virš linijos bus nurodytas kolekcijos objektų skaičius.

Kaip pasiekti visus kolekcijos elementus?

Vienintelis būdas pasiekti visus kolekcijos elementus VBA yra kilpos. Mes kartojame kiekvieną kolekcijos elementą, kad juos pasiektume. Tam mes naudojame kilpą. Kiekvienos kilpos laikoma greičiausiu ir švariausiu būdu pasiekti kolekcijos objektus.
Kolekcija per kolekciją VBA

Yra įvairių būdų, kaip peržiūrėti kolekciją VBA. Mes naudosime elegantiškiausią kiekvienai kilpai kartoti kolekciją.

Per daug peržiūrėkite kiekvieną kolekcijos elementą, tiesiog naudokite šią VBA kodo eilutę.

Kiekvienam ITM elementuose derinti. Spausdinti itm Kitas itm


Elementų pašalinimas iš kolekcijos (Collection.Remove)

Norėdami pašalinti elementą iš vba kolekcijos, galime naudoti pašalinimo metodą. Pašalinimo metodas apima vieną argumentą. Tai gali būti rodyklė arba elemento raktas (jei yra).

elementus. Pašalinkite (1) 'naudodami indeksą - elementus. Pašalinkite 1 - elementus. Pašalinkite ("apl") "naudodami raktinius elementus. Pašalinkite" apl "

Kolekcijos trynimas VBA

Na, jūs negalite ištrinti kolekcijos „vba“. Tačiau galite pašalinti visus tos kolekcijos elementus, vėl nustatydami ją kaip naują kolekciją.

Nustatyti elementus = Nauja kolekcija

Ši kodo eilutė sukurs naują elementų adresų kolekciją. Taigi mūsų kolekcija bus ištuštinta.

Masyvas vs kolekcija VBA

    Masyvas

  1. Masyvo dydis yra iš anksto nustatytas. Masyvo dydžio normaliai keisti negalima.
  2. Masyvuose gali būti tik tos pačios rūšies duomenys ir pirmiausia reikia deklaruoti tipą.
  3. Indeksavimas masyve prasideda nuo 0
  4. Masyvo nariai neturi jokio susieto rakto.
  5. Masyvai yra kintantys. Galite pakeisti jos narių vertybes.

    Kolekcija

  1. Kolekcijos dydis keičiasi pridedant ar pašalinant elementus.
  2. Kolekcijoje gali būti bet koks duomenų tipų skaičius. Kaip matėte aukščiau pateiktuose pavyzdžiuose.
  3. Indeksavimas VBA kolekcijoje prasideda nuo 1.
  4. Kolekcijos nariai gali susieti raktus.
  5. Kolekcijos yra nekintamos. Negalite tiesiogiai pakeisti jo nario vertybių.

Taigi, vaikinai, tai yra kolekcijų pagrindai. Yra daug VBA kolekcijos privalumų ir panaudojimo biuro įrankiuose. Kartu juos tyrinėsime. Iki tol, jei turite klausimų apie surinkimą ar ką nors, kas susiję su „Excel“/VBA, parašykite žemiau esančiame komentarų skyriuje.