Crearea unei colecții de obiecte
![Crearea de obiecte de colectare (a insera un element nou) Crearea unei colecții de obiecte](https://webp.images-on-off.com/25/246/128x191_wdu0o8hmmc9klcormytp.webp)
Această carte vă va ajuta să stăpânească mediul de dezvoltare integrat VBA și să învețe cum să program în VBA cu utilizarea de obiecte, proprietățile lor, metode și evenimente. Tehnicile de programare discutate sunt ilustrate prin exemple, pe care le puteți încerca imediat în practică. Cunoștințele dobândite va fi în măsură să se aplice pentru ajustarea și îmbunătățirea aplicațiile Office populare, inclusiv aplicații Office XP și pentru a crea propriile aplicații.
Cartea este conceput pentru cei care merg repede și fără efort să învețe cum să program pentru Windows, folosind VBA.
Book: VBA pentru Dummies
Crearea de obiecte de colecție
Crearea de obiecte de colecție
obiecte Solection sunt create în program la fel ca orice alte obiecte, folosind cuvântul cheie pentru a identifica tipul. Ca și în cazul altor obiecte, aveți două opțiuni.
* Puteți declara un nume de variabilă pentru obiectul și apoi folosiți instrucțiunea Set pentru a crea. În declarația Set, trebuie să utilizați un nou cuvânt cheie, pentru a crea o nouă colecție. De exemplu:
Dim colMixedBag Ca Colectia
Set colMixedBag = colecție nouă
colMixedBag.Add "Howard, Ethel"
Dim colSetOfStuff Ca colecție nouă
„Declarația următoare creează o colecție de
„Prin adăugarea acestuia întreg
Pentru a completa colecția de date creată, utilizați Adăugare (Add) metoda în același mod ca și atunci când adăugați obiectele în colecția de built-in VBA-aplicare (a se vedea capitolul 12). Exemple folosind metoda Add, veți găsi în secțiunea anterioară.
Adăugați sintaxa, metoda este următoarea:
Adăugați (elementul [nume] [, before indicele] [after index])
Elementul de exprimare este necesar, aceasta poate fi o valoare literală, o referință variabilă la un obiect sau o expresie mai complicată, formată din aceste componente - în general, tot ceea ce returnează o valoare de recunoscut VBA. Celelalte argumente ale metodei Add este opțională, acestea sunt discutate în următoarele secțiuni.
În general, puteți întotdeauna face referire la elementul din colecție prin indexul său în colecție, de multe ori Lo mai convenabil pentru a atribui un nume descriptiv elementului. Pentru a face acest lucru, atunci când dobayuekii de colectare R element de a specifica numele său ca un șir de caractere:
În această declarație, în colFinancials colecție de valoare adăugată 14323 0.44. În același timp, pentru acest element creează un nume. Este acceptabil să se utilizeze la specificarea numele unei variabile de tipul String.
Numele nu este doar mai ușor de reținut decât indicele, acesta este, în plus, oferă singura modalitate de încredere pentru a avea acces la un anumit element din colecție. Când utilizați Adăugare și Eliminare metode de pozițiile elementelor de date în colecția poate varia. Chiar dacă elementul №69 va fi de 29, puteți profita, totuși valoarea acestui articol, dacă știi numele lui.
Numele elementului poate fi atribuit numai prin utilizarea metodei Add. Care există deja pentru a numi elementul fără nume, va trebui să eliminați copia existentă folosind Remove și utilizați butonul Add pentru a adăuga un element nou.
Uneori este convenabil de a plasa colectarea de elemente într-o anumită ordine. Și chiar dacă nu se poate adăuga elemente în ordinea corectă a secvenței, este încă nici o problemă - Adăugați o metodă vă permite să inserați elemente ori de câte ori este necesar, doar muls are nevoie să folosească argumentele înainte (.Before) și după (post).
Să presupunem că aveți nevoie pentru a introduce un element nou înainte de elementul 35 în colecția.
Puteți utiliza această declarație pentru următoarele:
colAnimals. Adăugați strSpecies, înainte de 35
Elementul adăugat va fi elementul 35 în colectarea prin mutarea toate ulterioare (relative matricele Spre deosebire, colecții, elemente sunt numerotate de la 1) Pentru a raporta VBA, în cazul în care pentru a insera un element nou, puteți utiliza numele unui element existent, de exemplu:
colOvoschi. Adăugați = stiCopt, după „tomate“
În acest caz, VBA ar găsi în colecția de membru existent, numit de tomate și imediat după ce se va insera unul nou.
Este clar că operatorul folosind metoda Add, este posibil să se includă fie înainte de, sau după, dar nu ambele aceste argumente.
Pentru a adăuga o colecție de o multitudine de elemente pot fi folosite pentru ciclu. The Next, în același mod ca și a fost făcută cu matrice. De exemplu:
Dim X Ca Integer, Y Ca Integer
colHouseOfValues.Add Y * X
Vorbind de evident, eu vă informez că metoda Eliminare elimină elementul din colecție. Obiectul de îndepărtare poate fi setat fie prin utilizarea indexului, sau prin nume, de exemplu:
Nu uitați că, atunci când ștergeți un element, VBA, ca să spunem așa, „umple“ găurile - numerele tuturor elementelor următoare eliminarea, reducerea cu 1.
Ia pierdut în dimensiunea colecției este ușor, mai ales după utilizarea repetată Add și Remove. Generic obiect Colectia are doar o singură proprietate - Count (număr) - dar, având în vedere cele de mai sus, această proprietate este vitală. Această proprietate poate fi atribuit unei variabile, de exemplu:
Acesta poate fi, de asemenea, utilizat într-o expresie condițională, ca aceasta:
Dacă colPrices.Count> 1000
MsgBox „Prea multe poziții!“
Mai mult, este posibil să se utilizeze valoarea Count în bucla pentru. The Next, pentru a efectua o acțiune în ceea ce privește toate elementele de colectare, de exemplu:
Z Dim Ca Integer
Pentru Z = 1 Pentru col Prices.Count
MsgBox „Preț“ col Pret (Z)
Dar este mai bine în acest scop, de a utiliza o buclă pentru fiecare. În continuare (vezi cap. 8).
Pentru a identifica un element specific în colectarea, utilizarea indicele sau numele (dacă este definit). De exemplu, valoarea elementului în colecția poate fi atribuită unei variabile:
datDenRozhdeniya = colDniRozhdeniya ( "Basil Ali Babaevich")
Din păcate, trebuie să țină evidența numele ei înșiși - VBA nu oferă posibilitatea de a citi numele elementelor din colecție. În plus, nu puteți schimba numele elementului numai îndepărtarea elementului din colecția, și apoi adăugați-l din nou.
În mod similar, este imposibil în elementul curent în colecția de a pune o nouă valoare. Următoarea declarație de atribuire nu va funcționa: colInventory (1465) = 119
Din nou, singura modalitate de a modifica valoarea în colecția - înlăturarea elementului corespunzător, și adăugarea unui nou una cu noua valoare. Nu există astfel de restricții pentru obiectele din dictionar (dicționar), care sunt discutate în capitolul 14.
După cum sa menționat deja, aplicarea clasa Colectia VBA este limitată de faptul că datele este imposibil de a stoca tipuri definite de utilizator. Cu această restricție poate fi tolerată dacă vom alege un sistem adecvat pentru crearea de nume de elemente. În exemplul următor, fiecare trecere pentru ciclu. Următorul în colecția creează o bază de date de înregistrare. Această intrare este format din trei domenii, fiecare dintre care este identificat printr-un nume compus dintr-un semn descriptiv simplu și numărul de înregistrare. Iată codul relevant:
Dim I Ca Integer, strName ca șir
Dim strPhone Ca String, strAddress ca șir
Pentru I = 1 Pentru Total „I identifică numărul de înregistrare
„Primirea datelor pentru această intrare
strName = InputBox ( „Introduceți un nume pentru această înregistrare“)
„Adăugarea de«câmpuri»pentru această înregistrare în kollektsiye
colDatabase.Add strName, "Nume" eu
Mai târziu, puteți prelua informațiile stocate într-o înregistrare separată de caracteristici descriptive și numărul ca în următoarea declarație:
Dacă aveți de gând pentru a crea programe reale pentru a gestiona informațiile în bazele de date, nu utilizați o colecție de obiecte - au prea multe restrictii. În schimb, utilizați componentele conectate pentru a accesa bazele de date (exemple relevante, a se vedea capitolul 14). Dacă doriți să faceți toate lucrările le creați propriile clase de obiecte, care permite de a lucra cu tipuri de date personalizate. obiectele ar trebui să le permită să stocheze orice combinație de date care ar putea fi preluate ca o proprietate. În plus, ar fi frumos să adăugați un cod pentru a verifica dacă informațiile stocate în elemente individuale. (Clase de module sunt luate în considerare, cu toate că nu în detaliu în capitolul 14.)