Masīvi programmā Visual Basic lietošanai

Masīvi programmā Visual Basic for Application ir struktūras, kurās parasti tiek glabātas viena veida saistīto mainīgo kopas. Masīvu ierakstiem var piekļūt, izmantojot to skaitlisko indeksu.

Piemēram, ir 20 cilvēku komanda, kuru vārdi ir jāsaglabā vēlākai lietošanai VBA kodā. Varētu vienkārši deklarēt 20 mainīgos, kas satur katru nosaukumu, piemēram:

Dim Team_Member1 kā virkne Dim Team_member2 kā virkne ... Dim Team_Member20 kā virkne

Bet jūs varat izmantot daudz vienkāršāku un sakārtotāku veidu — saglabājiet komandas dalībnieku vārdu sarakstu 20 mainīgo masīvā, piemēram, Rinda:

Dim Team_Members (1 līdz 20) kā virkne

Iepriekš parādītajā rindā mēs esam deklarējuši masīvu. Tagad rakstīsim vērtību katram tā elementam, piemēram:

Team_Members(1) = "Džons Smits"

Papildu priekšrocība datu glabāšanai masīvā, salīdzinot ar atsevišķu mainīgo lielumu izmantošanu, kļūst acīmredzama, kad ir nepieciešams veikt vienu un to pašu darbību ar katru masīva elementu. Ja komandas dalībnieku vārdi tiktu saglabāti 20 atsevišķos mainīgajos, tad katru reizi būtu jāieraksta 20 koda rindiņas, lai ar katru no tiem veiktu vienu un to pašu darbību. Taču, ja nosaukumi tiek glabāti masīvā, tad ar katru no tiem var veikt vajadzīgo darbību, izmantojot vienkāršu cilpu.

Tālāk ir parādīts, kā tas darbojas, izmantojot koda piemēru, kas secīgi drukā katra komandas dalībnieka vārdus kolonnu šūnās. A aktīva Excel darblapa.

Ja i = 1 līdz 20 šūnām (i, 1). Vērtība = Team_Members(i) Nākamā i

Acīmredzot darbs ar masīvu, kurā glabājas 20 nosaukumi, ir daudz mazāk apgrūtinošs un precīzāks nekā 20 atsevišķu mainīgo lielumu izmantošana. Bet ja šie vārdi nav 20, bet 1000? Un ja vēl papildus prasās glabāt atsevišķi uzvārdus un tēvvārdus?! Skaidrs, ka šādu datu apjomu VBA kodā apstrādāt bez masīva palīdzības drīz kļūs pilnīgi neiespējami.

Daudzdimensiju masīvi programmā Excel Visual Basic

Iepriekš apskatītie Visual Basic masīvi tiek uzskatīti par viendimensionāliem. Tas nozīmē, ka viņi saglabā vienkāršu vārdu sarakstu. Tomēr masīviem var būt vairākas dimensijas. Piemēram, divdimensiju masīvu var salīdzināt ar vērtību režģi.

Pieņemsim, ka vēlaties saglabāt janvāra ikdienas pārdošanas rādītājus 5 dažādām komandām. Tam būs nepieciešams divdimensiju masīvs, kas sastāv no 5 metriku kopām 31 dienai. Deklarēsim šādu masīvu:

Dim Jan_Pārdošanas_skaitļi (1 līdz 31, 1 līdz 5) kā valūta

Lai piekļūtu masīva elementiem Jan_Pārdošanas_skaitļi, jums ir jāizmanto divi indeksi, kas norāda mēneša dienu un komandas numuru. Piemēram, tā elementa adrese, kurā ir pārdošanas rādītāji 2-oh komandas priekš 15 tūkst Janvāris būtu rakstīts šādi:

Jan_Pārdošanas_skaitļi(15, 2)

Tādā pašā veidā jūs varat deklarēt masīvu ar 3 vai vairāk dimensijām — vienkārši pievienojiet papildu dimensijas masīva deklarācijai un izmantojiet papildu indeksus, lai atsauktos uz šī masīva elementiem.

Masīvu deklarēšana programmā Excel Visual Basic

Iepriekš šajā rakstā mēs jau apskatījām vairākus masīvu deklarēšanas piemērus VBA, taču šī tēma ir pelnījusi sīkāku ieskatu. Kā parādīts, viendimensijas masīvu var deklarēt šādi:

Dim Team_Members (1 līdz 20) kā virkne

Šāda deklarācija norāda VBA kompilatoram, ka masīvs Komandas dalībnieki sastāv no 20 mainīgajiem lielumiem, kuriem var piekļūt ar indeksiem no 1 līdz 20. Tomēr mēs varētu domāt par mūsu masīva mainīgo numerāciju no 0 līdz 19, un tādā gadījumā masīvs ir jādeklarē šādi:

Dim Team_Members (0 līdz 19) kā virkne

Faktiski pēc noklusējuma masīva elementu numerācija sākas no 0, un masīva deklarācijā sākotnējais indekss var nebūt norādīts, piemēram:

Dim Team_Members(19) As String

VBA kompilators apstrādās šādu ierakstu kā 20 elementu masīva deklarēšanu ar indeksiem no 0 līdz 19.

Tie paši noteikumi attiecas uz daudzdimensiju Visual Basic masīvu deklarēšanu. Kā jau parādīts vienā no piemēriem, deklarējot divdimensiju masīvu, tā izmēru indeksi tiek atdalīti ar komatu:

Dim Jan_Pārdošanas_skaitļi (1 līdz 31, 1 līdz 5) kā valūta

Tomēr, ja nenorādīsiet sākuma indeksu abām masīva dimensijām un deklarējat to šādi:

Dim Jan_Sales_Figures(31, 5) Kā valūta

tad šis ieraksts tiks uzskatīts par divdimensiju masīvu, kura pirmajā dimensijā ir 32 elementi ar indeksiem no 0 līdz 31, bet otrajā masīva dimensijā ir 6 elementi ar indeksiem no 0 līdz 5.

Dinamiski masīvi

Visiem masīviem iepriekš minētajos piemēros ir noteikts izmēru skaits. Tomēr daudzos gadījumos mēs iepriekš nezinām, kāda izmēra jābūt mūsu masīvam. Mēs varam izkļūt no situācijas, deklarējot milzīgu masīvu, kura izmērs noteikti būs lielāks nekā nepieciešams mūsu uzdevumam. Bet šāds risinājums prasīs daudz papildu atmiņas un var palēnināt programmas darbību. Ir labāks risinājums. Varam izmantot dinamisko masīvu – tas ir masīvs, kura lielumu makro izpildes laikā var iestatīt un mainīt neskaitāmas reizes.

Dinamiskais masīvs tiek deklarēts ar tukšām iekavām, piemēram:

Dim Team_Members() As String

Tālāk jums būs jādeklarē masīva dimensija koda izpildes laikā, izmantojot izteiksmi RedDim:

Redim Team_Members (1 līdz 20)

Un, ja koda izpildes laikā jums atkal jāmaina masīva lielums, varat vēlreiz izmantot ReDim izteiksmi:

Ja komandas_lielums > 20, tad RedDim Team_Members (no 1 līdz komandas_lielumam) Beigas, ja

Ņemiet vērā, ka šādā veidā mainot dinamiskā masīva izmērus, tiks zaudētas visas masīvā saglabātās vērtības. Lai saglabātu datus jau masīvā, jāizmanto atslēgvārds Saglabātkā parādīts zemāk:

Ja komandas_lielums > 20, tad rediģēt, saglabāt komandas_biedrus (no 1 līdz komandas_lielumam) beigties, ja

Diemžēl atslēgvārds Saglabāt var izmantot tikai, lai mainītu masīva dimensijas augšējo robežu. Šādā veidā nevar mainīt masīva apakšējo robežu. Turklāt, ja masīvam ir vairākas dimensijas, izmantojiet atslēgvārdu Saglabāt, var mainīt tikai masīva pēdējo dimensiju.

Atstāj atbildi