Mga Array sa Visual Basic alang sa Aplikasyon

Ang mga han-ay sa Visual Basic alang sa Aplikasyon mao ang mga istruktura nga kasagarang nagtipig sa mga set sa may kalabutan nga mga variable sa parehas nga tipo. Ang mga entries sa array ma-access pinaagi sa ilang numerical index.

Pananglitan, adunay usa ka grupo sa 20 ka mga tawo kansang mga ngalan kinahanglan i-save para magamit sa ulahi sa VBA code. Ang usa mahimo ra nga magpahayag sa 20 nga mga variable aron huptan ang matag ngalan, sama niini:

Dim Team_Member1 Ingon String Dim Team_Member2 Ingon String ... Dim Team_Member20 Ingon String

Apan mahimo nimong gamiton ang labi ka yano ug mas organisado nga paagi - pagtipig usa ka lista sa mga ngalan sa miyembro sa team sa usa ka han-ay sa 20 nga mga variable sama sa hilo:

Dim Team_Members(1 Hangtod sa 20) Ingong String

Sa linya nga gipakita sa ibabaw, gipahayag namon ang usa ka laray. Karon magsulat kita og bili sa matag usa sa mga elemento niini, sama niini:

Team_Members(1) = "John Smith"

Ang usa ka dugang nga bentaha sa pagtipig sa datos sa usa ka laray, kon itandi sa paggamit sa bulag nga mga variable, mahimong dayag kung kini kinahanglan nga himuon ang parehas nga aksyon sa matag elemento sa laray. Kung ang mga ngalan sa mga miyembro sa team gitipigan sa 20 nga lainlain nga mga variable, nan kinahanglan nga 20 ka linya sa code ang isulat matag higayon aron mahimo ang parehas nga aksyon sa matag usa kanila. Bisan pa, kung ang mga ngalan gitipigan sa usa ka laray, mahimo nimong buhaton ang gusto nga aksyon sa matag usa niini gamit ang usa ka yano nga loop.

Giunsa kini paglihok gipakita sa ubos uban ang usa ka pananglitan sa code nga nag-imprinta sa mga ngalan sa matag miyembro sa team nga sunud-sunod sa mga selyula sa kolum. A aktibo nga worksheet sa Excel.

Para sa i = 1 Hangtod sa 20 ka Cell(i,1).Bili = Team_Members(i) Sunod i

Dayag nga, ang pagtrabaho kauban ang usa ka laray nga nagtipig sa 20 nga mga ngalan labi ka dili kaayo hasol ug mas tukma kaysa paggamit sa 20 nga lainlaing mga variable. Apan unsa man kung kini nga mga ngalan dili 20, apan 1000? Ug kung, dugang pa, gikinahanglan nga itago nga gilain ang mga apelyido ug patronymics?! Klaro nga sa dili madugay mahimong hingpit nga imposible ang pagdumala sa ingon nga gidaghanon sa datos sa VBA code nga wala’y tabang sa usa ka laray.

Multidimensional arrays sa Excel Visual Basic

Ang Visual Basic arrays nga gihisgutan sa ibabaw gikonsiderar nga one-dimensional. Kini nagpasabot nga sila nagtipig og usa ka yano nga listahan sa mga ngalan. Bisan pa, ang mga arrays mahimong adunay daghang mga dimensyon. Pananglitan, ang usa ka duha ka dimensyon nga laray mahimong itandi sa usa ka grid sa mga kantidad.

Ingnon ta nga gusto nimong tipigan ang inadlaw nga numero sa halin para sa Enero para sa 5 ka lain-laing mga team. Magkinahanglan kini og duha ka dimensyon nga han-ay nga naglangkob sa 5 ka set sa metrics sulod sa 31 ka adlaw. Atong ipahayag ang usa ka laray sama niini:

Dim Jan_Sales_Figures(1 To 31, 1 To 5) Ingong Currency

Aron ma-access ang mga elemento sa array Jan_Sales_Figures, kinahanglan nimong gamiton ang duha ka mga indeks nga nagpaila sa adlaw sa bulan ug ang numero sa mando. Pananglitan, ang adres sa usa ka elemento nga adunay mga numero sa pagbaligya alang sa 2-oh mga team alang sa Ika-15 Ang Enero masulat nga sama niini:

Jan_Sales_Figures(15, 2)

Sa samang paagi, mahimo nimong ideklara ang usa ka laray nga adunay 3 o labaw pa nga mga dimensyon - dugangi lang ang dugang nga mga dimensyon sa deklarasyon sa laray ug gamita ang dugang nga mga indeks sa pagtumong sa mga elemento niini nga laray.

Pagdeklara sa mga Array sa Excel Visual Basic

Sa sayo pa niini nga artikulo, gitan-aw na nato ang pipila ka mga pananglitan sa pagdeklara sa mga arrays sa VBA, apan kini nga hilisgutan angay nga tan-awon pag-ayo. Sama sa gipakita, ang usa ka dimensyon nga array mahimong ipahayag sama niini:

Dim Team_Members(1 Hangtod sa 20) Ingong String

Ang ingon nga deklarasyon nagsulti sa VBA compiler nga ang array Team_Members naglangkob sa 20 ka mga variable nga mahimong ma-access sa mga indeks gikan sa 1 ngadto sa 20. Bisan pa, mahimo natong hunahunaon ang pag-numero sa atong array nga mga variable gikan sa 0 ngadto sa 19, diin ang array kinahanglan nga ipahayag sama niini:

Dim Team_Members(0 Hangtod sa 19) Ingong String

Sa tinuud, pinaagi sa default, ang pag-numero sa mga elemento sa array magsugod gikan sa 0, ug sa deklarasyon sa array, ang inisyal nga indeks mahimong dili matino, sama niini:

Dim Team_Members(19) Ingon String

Ang VBA compiler motagad sa maong entry sama sa pagdeklara sa han-ay sa 20 ka elemento nga adunay mga indeks gikan sa 0 ngadto sa 19.

Ang sama nga mga lagda magamit sa pagdeklarar sa multidimensional Visual Basic arrays. Ingon sa gipakita na sa usa sa mga pananglitan, kung nagpahayag sa usa ka duha-ka-dimensional nga laray, ang mga indeks sa mga sukod niini gibulag sa usa ka koma:

Dim Jan_Sales_Figures(1 To 31, 1 To 5) Ingong Currency

Bisan pa, kung dili nimo itakda ang usa ka pagsugod nga indeks alang sa duha nga mga sukat sa laray ug ipahayag kini nga sama niini:

Dim Jan_Sales_Figures(31, 5) Ingon Currency

unya kini nga entry pagatagdon ingon nga usa ka two-dimensional array, ang una nga dimensyon nga adunay 32 nga mga elemento nga adunay mga indeks gikan sa 0 hangtod 31, ug ang ikaduha nga dimensyon sa array adunay 6 nga mga elemento nga adunay mga indeks gikan sa 0 hangtod 5.

Mga kusog nga paghan-ay

Ang tanan nga mga array sa mga pananglitan sa ibabaw adunay usa ka piho nga gidaghanon sa mga dimensyon. Bisan pa, sa daghang mga kaso wala kami nahibal-an daan kung unsa ang gidak-on sa among array. Makagawas kita sa sitwasyon pinaagi sa pagdeklara sa usa ka dako nga han-ay, ang gidak-on nga mas dako pa kay sa gikinahanglan alang sa atong buluhaton. Apan ang ingon nga solusyon magkinahanglan daghang dugang nga memorya ug makapahinay sa programa. Adunay mas maayo nga solusyon. Mahimo natong gamiton ang usa ka dinamikong array - kini usa ka array kansang gidak-on mahimong itakda ug usbon bisan unsang gidaghanon sa mga higayon sa panahon sa pagpatuman sa usa ka macro.

Ang usa ka dinamikong laray gipahayag nga adunay walay sulod nga mga parentesis, sama niini:

Dim Team_Members() Ingon String

Sunod, kinahanglan nimo nga ipahayag ang dimensyon sa array sa panahon sa pagpatuman sa code gamit ang ekspresyon ReDim:

ReDim Team_Members(1 Hangtod sa 20)

Ug kung sa panahon sa pagpatuman sa code kinahanglan nimo nga usbon pag-usab ang gidak-on sa laray, nan mahimo nimong gamiton pag-usab ang ekspresyon sa ReDim:

Kung Team_Size > 20 Unya ReDim Team_Members(1 To Team_Size) Tapuson Kung

Hinumdumi nga ang pagbag-o sa usa ka dinamikong laray niining paagiha moresulta sa pagkawala sa tanan nga mga kantidad nga gitipigan sa laray. Aron matipigan ang datos nga anaa na sa laray, kinahanglan nimong gamiton ang keyword Panalipdaningon sa gipakita sa ubos:

Kung Team_Size > 20 Unya ReDim Preserve Team_Members(1 To Team_Size) Tapuson Kung

Ikasubo ang keyword Panalipdan magamit ra aron usbon ang taas nga bound sa usa ka dimensyon sa array. Ang ubos nga utlanan sa usa ka laray dili mausab niining paagiha. Usab, kung ang laray adunay daghang mga dimensyon, unya gamita ang keyword Panalipdan, ang kataposang dimensyon lamang sa laray ang mahimong mabag-o.

Leave sa usa ka Reply