Низови у Висуал Басиц-у за апликације

Низови у Висуал Басиц-у за апликације су структуре које обично чувају скупове повезаних променљивих истог типа. Уносима низа се приступа преко њиховог нумеричког индекса.

На пример, постоји тим од 20 људи чија имена треба сачувати за каснију употребу у ВБА коду. Могло би се једноставно декларисати 20 променљивих за чување сваког имена, овако:

Дим Теам_Мембер1 Ас Стринг Дим Теам_Мембер2 Ас Стринг ... Дим Теам_Мембер20 Ас Стринг

Али можете користити много једноставнији и организованији начин – сачувајте листу имена чланова тима у низу од 20 променљивих као што је низ:

Дим Теам_Мемберс(1 до 20) као стринг

У реду приказаном изнад, декларисали смо низ. Хајде сада да напишемо вредност сваком од његових елемената, овако:

Теам_Мемберс(1) = "Џон Смит"

Додатна предност складиштења података у низу, у поређењу са коришћењем засебних променљивих, постаје очигледна када постане неопходно да се изврши иста акција на сваком елементу низа. Ако би имена чланова тима била ускладиштена у 20 засебних варијабли, онда би било потребно 20 редова кода да се сваки пут упише да би се извршила иста радња на свакој од њих. Међутим, ако су имена ускладиштена у низу, онда можете извршити жељену радњу са сваким од њих помоћу једноставне петље.

Како то функционише је приказано у наставку са примером кода који штампа имена сваког члана тима узастопно у ћелијама колоне. A активни Екцел радни лист.

За и = 1 до 20 ћелија(и,1).Вредност = Чланови_тима(и) Следећи и

Очигледно, рад са низом који чува 20 имена је много мање гломазан и тачнији од коришћења 20 засебних променљивих. Али шта ако ових имена није 20, већ 1000? А ако се уз то тражи одвојено чување презимена и патрониме?! Јасно је да ће ускоро постати потпуно немогуће руковати таквом количином података у ВБА коду без помоћи низа.

Вишедимензионални низови у програму Екцел Висуал Басиц

Висуал Басиц низови о којима смо горе говорили сматрају се једнодимензионалним. То значи да они чувају једноставну листу имена. Међутим, низови могу имати више димензија. На пример, дводимензионални низ се може упоредити са мрежом вредности.

Рецимо да желите да сачувате дневне податке о продаји за јануар за 5 различитих тимова. Ово ће захтевати дводимензионални низ који се састоји од 5 скупова метрика за 31 дан. Хајде да декларишемо низ овако:

Дим Јан_Салес_фигурес(1 до 31, 1 до 5) као валута

За приступ елементима низа Јан_Салес_Фигурес, потребно је да користите два индекса који означавају дан у месецу и број команде. На пример, адреса елемента који садржи податке о продаји за 2-ох тимови за 15 тх Јануар би био написан овако:

Јан_Салес_фигурес(15, 2)

На исти начин, можете декларисати низ са 3 или више димензија – само додајте додатне димензије декларацији низа и користите додатне индексе за упућивање на елементе овог низа.

Декларисање низова у програму Екцел Висуал Басиц

Раније у овом чланку смо већ погледали неколико примера декларисања низова у ВБА, али ова тема заслужује детаљнији поглед. Као што је приказано, једнодимензионални низ се може декларисати овако:

Дим Теам_Мемберс(1 до 20) као стринг

Таква декларација говори ВБА компајлеру да је низ Чланови тима састоји се од 20 променљивих којима се може приступити са индексима од 1 до 20. Међутим, могли бисмо да помислимо да нумеришемо наше променљиве низа од 0 до 19, у ком случају низ треба да буде декларисан овако:

Дим Теам_Мемберс(0 до 19) као стринг

У ствари, подразумевано, нумерисање елемената низа почиње од 0, а у декларацији низа почетни индекс можда уопште није наведен, овако:

Дим Теам_Мемберс(19) Ас Стринг

ВБА компајлер ће такав унос третирати као декларисање низа од 20 елемената са индексима од 0 до 19.

Иста правила важе када се декларишу вишедимензионални Висуал Басиц низови. Као што је већ приказано у једном од примера, када се декларише дводимензионални низ, индекси његових димензија су одвојени зарезом:

Дим Јан_Салес_фигурес(1 до 31, 1 до 5) као валута

Међутим, ако не наведете почетни индекс за обе димензије низа и декларишете га овако:

Дим Јан_Салес_фигурес(31, 5) Као валута

тада ће се овај унос третирати као дводимензионални низ, чија прва димензија садржи 32 елемента са индексима од 0 до 31, а друга димензија низа садржи 6 елемената са индексима од 0 до 5.

Динамички низови

Сви низови у горњим примерима имају фиксни број димензија. Међутим, у многим случајевима не знамо унапред које величине треба да буде наш низ. Из ситуације можемо изаћи тако што ћемо прогласити огроман низ чија ће величина сигурно бити већа него што је потребно за наш задатак. Али такво решење ће захтевати много додатне меморије и може успорити програм. Постоји боље решење. Можемо користити динамички низ – ово је низ чија се величина може подесити и променити било који број пута током извршавања макроа.

Динамички низ је декларисан са празним заградама, овако:

Дим Теам_Мемберс() као стринг

Затим ћете морати да декларишете димензију низа током извршавања кода користећи израз РеДим:

РеДим Теам_Мемберс(1 до 20)

А ако током извршавања кода морате поново да промените величину низа, онда можете поново да користите израз РеДим:

Ако је Теам_Сизе > 20, онда РеДим Теам_Мемберс(1 до Теам_Сизе) завршава ако

Имајте на уму да ће промена величине динамичког низа на овај начин довести до губитка свих вредности ускладиштених у низу. Да бисте ускладиштили податке који су већ у низу, потребно је да користите кључну реч Очувајкао што је приказано у наставку:

Ако је Теам_Сизе > 20 онда РеДим Пресерве Теам_Мемберс(1 до Теам_Сизе) Енд Иф

Нажалост, кључна реч Очувај може се користити само за промену горње границе димензије низа. Доња граница низа се не може променити на овај начин. Такође, ако низ има више димензија, онда помоћу кључне речи Очувај, може се променити величина само последње димензије низа.

Ostavite komentar