Създаване на колекция от предмети

Създаване на колекция от предмети

Тази книга ще ви помогне да овладеете VBA интегрирана среда за разработка и да научат как да програмирате на VBA с използването на обекти, техните свойства, методи и събития. Обсъдени техники за програмиране са илюстрирани с примери, които можете веднага да изпробват на практика. Придобитите знания ще можете да кандидатствате за регулиране и подобряване на популярни приложения на Office, включително Office XP приложения и да създават свои собствени приложения.

Книгата е предназначена за тези, които ще бързо и без усилия да научат как да се програмира за Windows, с помощта на VBA.

Книга: VBA за манекени

Създаване Objects Collection

Създаване Objects Collection

Solection се създават обекти в програмата точно като всички други предмети, с помощта на ключова дума, за идентифициране на типа. Както и при другите предмети, имате две възможности за избор.

* Можете да декларирате променлива име на обекта, и след това да използвате отчета Set, за да го създадете. В изявлението Set, ще трябва да използвате новата ключова дума, за да се създаде нова колекция. Например:

Дим colMixedBag Както Collection

Задайте colMixedBag = Нова колекция

colMixedBag.Add "Хауърд, Етел"

Дим colSetOfStuff Като Нова колекция

"Изявлението по-долу се създава колекция от

"С добавянето число

За да се запълни създадена за събиране на данни, използвайте Добави (Add) метод по същия начин, както при добавяне на обектите в колекцията на вградения VBA-приложение (виж глава 12). Примери за използване на метода на нея можете да намерите в предишния раздел.

Добави синтаксис метод е, както следва:

Добавя се (елемент [име] [, преди индекса] [след индекса])

изразяване елемент е необходимо, тя може да бъде буквално стойност, променлива позоваване на обект или по-сложно експресия, съставена от следните компоненти - като цяло, всичко, което връща стойност разпознаваем VBA. Другите аргументи на метода за добавяне не е задължително, те са разгледани в следващите раздели.

Като цяло, винаги можете да се обърнете към елемента в колекцията от индекса си в колекцията, ето често е по-удобно да зададете елемент описателно име. За да направите това, когато dobayuekii колекция елемент R посочите името си като низ:

В това изявление, в colFinancials събиране на добавената стойност 14323 0.44. В същото време за този елемент създава име. Това е приемлив за използване, когато се посочва името на променлива от тип String.

Името е не само по-лесно да се запомни от индекса се, освен това, той е единственото надеждният начин за достъп до даден елемент в колекцията. Когато използвате за добавяне и премахване на методи за елемент на данните позиции в колекцията може да варира. Дори ако елементът №69 ще бъде на 29-ти, все още можете да се възползвате от стойността на този елемент, ако знаете името му.

Името на елемента може да бъде назначен само чрез използване на метода Add. Това вече съществува, за да именувате без име, ще трябва да се премахне съществуващата копие с помощта на премахване и използвайте бутона Add, за да добавите елемент отново.

Понякога е удобно да поставите събиране на елементи в определен ред. И дори ако не може да добавяте елементи към правилния ред на последователността, тя все още е не е проблем - Добавяне метод позволява да вмъкнете елементи винаги, когато е необходимо, просто доене той трябва да се използва аргументите преди (.Преди) и след (пост).

Да предположим, че трябва да се въведе нов елемент преди 35-ия елемент в колекцията.

Можете да използвате тази декларация до следното:

colAnimals. Добави strSpecies, преди 35

Добавената елемент ще бъде 35-ата елемент в колекцията чрез преместване на всички последващи (Относителните разлика масиви, колекции, елементи са номерирани от 1) За да съобщите на VBA, къде да се въведе нов елемент, можете да използвате името на съществуващ елемент, например:

colOvoschi. Добави = stiCopt, след като "Домат"

В този случай, VBA ще намерите в колекцията на съществуващ член на име Домат и веднага след това ще въведе нов.

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

За да добавите колекция от множество елементи могат да бъдат използвани за цикъл. Следващата, по същия начин, както беше направено с масиви. Например:

Дим X Като цяло число, Y Като цяло число

colHouseOfValues.Add Y * X

Говорейки за очевидно, аз Ви информираме, че методът за премахване премахва елемента от колекцията. Обект за отстраняване може да бъде настроена чрез използване на индекса, или по име, например:

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

Изчезвай в размера на колекцията е лесно, особено след многократно използвате Добави и Премахни. Generic Collection обект има само един имот - Count (брой) - но, с оглед на изложеното по-горе, този хотел е от жизненоважно значение. Този имот може да се причисли към променлива, например:

Тя може да се използва в условен израз, подобен на този:

Ако colPrices.Count> 1000

MsgBox "Твърде много позиции!"

Освен това е възможно да се използва стойността на Графа в За цикъла. Следващата, за извършване на определени действия по отношение на всички елементи от колекцията, като например:

Дим Z Като цяло число

За Z = 1 до колона Prices.Count

MsgBox "цена" COL цени (Z)

Но това е по-добре за тази цел да се използва за всеки цикъл. Следваща (виж гл. 8).

Да се ​​идентифицират определен елемент в колекцията, използвайте индекса или името (ако е зададена). Например, стойността на елемента в колекцията могат да бъдат причислени към една променлива:

datDenRozhdeniya = colDniRozhdeniya ( "Василий Али Babaevich")

За съжаление, ще трябва да се следи от имената си - VBA не предлага възможност да прочете имената на предметите в колекцията. В допълнение, не можете да промените името на елемент само като премахване на елемента от колекцията, а след това го добавете отново.

По същия начин, не е възможно в текущия елемент в колекцията да се сложи нова стойност. Следното изявление задача няма да работи: colInventory (1465) = 119

Отново, единственият начин да се промени стойността в колекцията - отстраняване на съответния елемент, и добавяне на нов с новата стойност. Такива ограничения не за речник обекти (речниково), които са разгледани в глава 14.

Както вече споменахме, клас Collection VBA приложение се ограничава от факта, че данните, които е невъзможно да съхранявате потребителски дефинирани типове. С това ограничение може да бъде толерирано ако изберем подходяща система за създаване на имена на елементи. В следващия пример, всеки пропуск за цикъл. Следваща в колекцията създава запис база данни. Този пост се състои от три области, всяка от които се идентифицират от името състои от прост описателен знак и номер на вписване. Ето съответния код:

Дим аз Като цяло число, strName Както стринга

Дим strPhone Както стринга, strAddress Както стринга

За I = 1 За Общо "Аз идентифицира номера на запис

"Получаване на информация за този запис

strName = InputBox ( "Въведете име за този запис")

"Добавянето на" полета "за този запис в kollektsiye

colDatabase.Add strName, "Име" аз

По-късно можете да възстановите информацията, съхранявана в отделен запис на описателни функции и номер, както е в следното изявление:

Ако ще да се създаде реални програми за управление на информация в бази данни, не използвайте колекция от предмети - те са твърде много ограничения. Вместо това, използвайте свързаните компоненти за достъп до бази данни (подходящи примери, виж глава 14). Ако искате да се свърши цялата работа сами, да създадете свои собствени класове за обекти, което позволява да се работи с потребителски типове данни. Вашите обекти трябва да им позволяват да съхранявате всяка комбинация от данни, който може да бъде възстановен като собственост. Освен това, би било хубаво да добавите код, за да се увери, че съхранената информация в отделни елементи. (Класове Модули се считат, макар да не са в големи подробности в глава 14.)