ВБА - Декларишите (затамни), креирајте и иницијализујте променљиву поља

Овај водич ће показати како декларисати (затамнити), креирати и покренути променљиве низа у ВБА

Шта је ВБА променљива поља?

Променљива низа ВБА може се сматрати групом променљивих, ускладиштених под истим именом и са истим типом података. Низ може да складишти текст, бројеве или објекте.

Позивате се на елемент у низу користећи његов индексни број.

Променљиву низа можете декларисати на исти начин на који бисте декларисали било коју другу променљиву помоћу кључне речи Дим, Статиц, Публиц или Привате.

Статички низови

Постоје 2 врсте низова - статички и динамички. Статички низ се декларише са наведеном величином када га првотно декларишете. Такође се назива и фиксни низ.

1 Дим интА (4) као цео број

Горњи низ је декларисан помоћу израза Дим на нивоу процедуре или модула, а величина низа је 5 јер нисмо декларисали ЛБоунд вредност низа.

Не, то није правописна грешка! Величина низа је 5, упркос уносу 4 у низ. То је зато што индекси низа аутоматски почињу од нуле.

Индекси низа

Индекси низа аутоматски почињу на нули, осим ако База опција 1 је декларисан на врху вашег кодног модула.

Ако База опција 1 је декларисан, тада ће низови аутоматски почети са 1.

Међутим, сматрам да је декларисање променљивих на такав начин проблематично. Рецензенти кода можда нису свесни да низови почињу од нуле или декларације Оптион Басе 1

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

1 Затамните интА (2 до 5) као цео број

Имајте на уму да када то учините, можете покренути низ са било ког броја (не само 1 или 0).

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

Променљива Динамиц Арраи је низ чија се величина може променити током извођења. Декларишете динамичке променљиве без величине.

1 Дим интА () као цео број

Наредбу РеДим можете користити за навођење величине низа након што је низ креиран.

1 РеДим интА (2)

Динамички низ можете променити у било ком тренутку. Међутим, када се користи изјава РеДим, све постојеће вредности се бришу. Да бисте сачували постојеће вредности низа, користите РеДим Пресерве уместо тога.

1 РеДим Пресерве интА (2)

Можете декларисати динамички низ на нивоу процедуре, модула или глобалног нивоа, али можете користити само израз РеДим унутар процедуре.

Вариант Арраис

Варијантни низови су динамички низови са којима је лакше радити.

1 Дим варНамес ()

Имајте на уму да не морате да наводите тип података (претпоставља се да је варијанта) или величину низа.

Као што ћемо видети у наставку, можете покренути варијантне низове помоћу функције низа (нема потребе да прво мењате величину поља)!

Декларишите модуле и јавне низове

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

1234 Суб СтатицАрраи ()'декларишу низ са ЛБоунд вредношћу 1 и УБоунд вредношћу 4Дим ИнтА (1 до 4) као ИнтегерЕнд Суб

Али они се такође могу декларисати на нивоу модула или на глобалном нивоу.

1234567 Опција Експлицитно'декларишу низ са ЛБоунд вредношћу 1 и УБоунд вредношћу 4Дим ИнтА (1 до 4) као ИнтегерСуб СтатицАрраи ()Енд Суб

У овом примеру, променљива низа се може позвати било где у оквиру овог модула кода. Уместо тога, можете прогласити јавни низ који се може користити током целог вашег ВБА пројекта (погледајте следећи одељак).

Декларисање јавног низа

Декларишете јавни статички низ као што бисте декларисали јавну променљиву.

1 Јавни стрНамес (3) као Стринг

Ова декларација би требала ићи на врху вашег модула, испод Оптион Екплицит. Затим се може користити током целог вашег ВБА пројекта у било ком модулу или процедури.

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

Иницијализујте низове

Статичком низу можете доделити вредности на следећи начин.

1234567891011 Суб СтатицАрраи ()'декларишу низ са ЛБоунд вредношћу 1 и УБоунд вредношћу 4Дим ИнтА (1 до 4) као Интегер'иницијализује низИнтА (1) = 10ИнтА (2) = 20ИнтА (3) = 30ИнтА (4) = 40'прикажи резултат позиције 2 низа у непосредном прозоруДебуг.Принт ИнтА (2)Енд Суб

Ако покренете горњу процедуру, вредност 20 ће се приказати у непосредном прозору.

Такође можете доделити вредности динамичком низу на исти начин

12345678910111213 Суб ДинамицАрраи ()'декларишу динамички низ, али изостављају везане вредностиДим ИнтА () као Интегер'иницијализује низРеДим ИнтА (1 до 4)ИнтА (1) = 10ИнтА (2) = 20ИнтА (3) = 30ИнтА (4) = 40'прикажи резултат позиције 2 низа у непосредном прозоруДебуг.ПринтИнтА (2)Енд Суб

Функција низа

Међутим, само са варијантним низом, можете користити функцију низа која може бити лакша од стандардне методе.

12 'попуни низинтА () = Поље (10, 20, 30, 40)

Напуните низ помоћу петље

Низове можете попунити и петљањем кроз низ ћелија у Екцелу

1234567891011121314151617 Под ТестДинамицАрраиФромЕкцел ()'декларишите низДим стрНамес () Ас Стринг'декларишите цео број за бројање редова у опсегуДим н Ас Интегер'декларишу цео број за петљуДим и Ас Интегер'броји редове у опсегун = Распон ("А1", Опсег ("А1"). Крај (клДовн)). Ровс.Цоунт'редумирајте низ на количину редова у распону.РеДим стрНамес (н)За и = 0 То нстрНамес (и) = Ранге ("А1"). Оффсет (и + 1, 0)Затим сам'приказују вредности у низуМсгБок Јоин (стрНамес ())Енд Суб

Поново иницијализујте низове

Можете поново покренути низ у било којој фази кода, али ћете тада изгубити оригиналну вредност која се налази на тој позицији у вашем низу.

1234567891011121314 Суб СтатицАрраи ()'декларишу низ са ЛБоунд вредношћу 1 и УБоунд вредношћу 4Дим ИнтА (1 до 4) као Интегер'иницијализује низИнтА (1) = 10ИнтА (2) = 20ИнтА (3) = 30ИнтА (4) = 40'прикажи резултат позиције 2 низа у непосредном прозоруДебуг.Принт ИнтА (2)'поново иницијализујте низинтА (2) = 200Дебуг.Принт ИнтА (2)Енд Суб

У горњем примеру, статички низ ће задржати све вредности, осим вредности у позицији 2 - та вредност ће се променити у 200.

Коришћење РеДим -а

Ако користите динамички низ, наредба РеДим се користи за постављање величине вашег низа. Наредбу РеДим можете накнадно користити у свом коду да бисте променили величину низа онолико пута колико је потребно. Доњи ред кода ће поново покренути интА Арраи да буде величине 2 (Запамтите - индекс низа почиње на 0!)

1 РеДим интА (1) као Интегер

Дакле, код, укључујући изјаву РеДим, изгледао би као доњи пример.

1234567891011121314151617 Под ТестДинамицАрраи ()'декларишите низДим интА () Као цео бројРеДим интА (2)'попуните низ бројевимаинтА (0) = 2интА (1) = 5интА (2) = 9'покажите број на позицији 1Дебуг.Принт интА (1)'поново смањите низ да бисте променили величинуРеДим интА (3)интА (0) = 6интА (1) = 8'овај пут прикажи број на позицији 1Дебуг.Принт интА (1)Енд Суб

Ако покренете горњу процедуру, вредност 5 ће се приказати у непосредном прозору, а затим ће се приказати вредност 8 након што смо променили величину низа помоћу РеДим -а и поново га попунили. Међутим, како нисмо попунили ИнтА (2) и нисмо користили Ре-Дим Пресерве, вредност у тој позицији у низу ће бити уклоњена и обе позиције 3 и 4 у низу ће бити нуле.

Коришћење РеДим Пресерве -а

Ако користимо РеДим Пресерве, он ће задржати изворне вредности садржане у низу.

1234567891011121314151617 Под ТестДинамицАрраи ()'декларишите низДим интА () Као цео бројРеДим интА (2)'попуните низ бројевимаинтА (0) = 2интА (1) = 5интА (2) = 9'покажите број на позицији 2Дебуг.Принт интА (2)'понови низРеДим интА (3)интА (0) = 6интА (1) = 8'поново покажите број на позицији 2Дебуг.Принт интА (2)Енд Суб

У оба горе приказана оквира за поруке, број 9 ће се појавити јер израз РеДим Пресерве задржава ту вредност на том месту.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave