Array di Visual Basic de ji bo Serlêdanê

Array di Visual Basic-ê de ji bo Serlêdanê strukturên ku bi gelemperî komek guhêrbarên têkildar ên heman celebî hilînin. Têketinên array ji hêla jimareya wan ve têne gihîştin.

Mînakî, tîmek ji 20 kesan heye ku navên wan ji bo karanîna paşê di koda VBA de bêne tomar kirin. Mirov dikare bi tenê 20 guherbaran ragihîne ku her navek bigire, mîna:

Dim Team_Member1 As String Dim Team_Member2 As String ... Dim Team_Member20 As String

Lê hûn dikarin rêyek pir hêsan û organîzetir bikar bînin - navnîşek navên endamên tîmê di nav rêzek ji 20 guherbaran de hilînin. Ben:

Dim Team_Members(1 To 20) Wek String

Di rêza ku li jor hatî destnîşan kirin de, me rêzek ragihand. Naha em nirxek ji her hêmanek wê re binivîsin, mîna vê:

Team_Members(1) = "John Smith"

Awantajek din a hilanîna daneyan di rêzikekê de, li gorî karanîna guhêrbarên cihêreng, diyar dibe dema ku pêdivî bi pêkanîna heman çalakiyê li ser her hêmanek rêzê hebe. Ger navên endamên tîmê di 20 guhêrbarên cihê de hatin hilanîn, wê hingê pêdivî ye ku 20 rêzikên kodê her carê binivîsin da ku li ser her yek ji wan heman çalakiyê pêk bînin. Lêbelê, heke nav di nav rêzek de têne hilanîn, wê hingê hûn dikarin çalakiya xwestinê bi her yek ji wan re bi karanîna pêlekek hêsan pêk bînin.

Meriv çawa dixebite li jêr bi mînakek kodê tête destnîşan kirin ku navên her endamek tîmê bi rêzê di hucreyên stûnê de çap dike. A pelgeya xebatê ya Excel ya çalak.

Ji bo i = 1 heta 20 hucreyan (i,1).Nirx = Endamên_Tîmê (i) Piştre i

Eşkere ye, xebitandina bi rêzek ku 20 navan hilîne, ji karanîna 20 guhêrbarên cihêreng pir hindiktir û rasttir e. Lê heger ev nav ne 20, lê 1000 bin? Û eger pêve jî, pêwîst e paşnav û paşnav ji hev cuda bên girtin?! Eşkere ye ku ew ê di demek nêzîk de bi tevahî ne gengaz be ku meriv bi vî rengî daneya di koda VBA-yê de bêyî arîkariya rêzek bi rê ve bibe.

Di Excel Visual Basic de rêzikên piralî

Rêzikên Visual Basic yên ku li jor hatine nîqaş kirin yek-alî têne hesibandin. Ev tê vê wateyê ku ew navnîşek hêsan a navan hilînin. Lêbelê, array dikarin çend pîvanan hebin. Mînakî, rêzek du-alî dikare bi tora nirxan re were berhev kirin.

Ka em bibêjin ku hûn dixwazin jimareyên firotanê yên rojane yên meha Çile ji bo 5 tîmên cihêreng biparêzin. Ji bo vê yekê 5 rojan rêzek du-alî ku ji 31 komên metrikan pêk tê hewce dike. Werin em arrayek weha ragihînin:

Dim Jan_Sales_Figures(1 Ber 31, 1 Ber 5) Wek Dirav

Ji bo gihîştina hêmanên array Jan_Sales_Figures, hûn hewce ne ku du navnîşan bikar bînin ku roja mehê û hejmara fermanê destnîşan dikin. Mînakî, navnîşana hêmanek ku ji bo hejmarên firotanê vedihewîne 2-oh tîmên ji bo 15 th Çile dê wiha were nivîsandin:

Jan_Sales_Figures(15, 2)

Bi heman awayî, hûn dikarin rêzek bi 3 an zêdetir pîvanan ragihînin - tenê pîvanên din li danezana rêzê zêde bikin û nîşaneyên din bikar bînin da ku li hêmanên vê rêzê binihêrin.

Daxuyankirina Arrayan di Excel Visual Basic de

Berê di vê gotarê de, me berê li çend mînakên ragihandina rêzikên li VBA nihêrî, lê ev mijar hêjayî nêrînek nêzîk e. Wekî ku tê xuyang kirin, rêzek yek-alî dikare bi vî rengî were ragihandin:

Dim Team_Members(1 To 20) Wek String

Daxuyaniyek wusa ji berhevkarê VBA re dibêje ku array Team_Members Ji 20 guhêrbaran pêk tê ku dikarin bi îndeksên ji 1 heta 20 bigihîjin wan. Lêbelê, em dikarin bifikirin ku guhêrbarên xwe ji 0 heya 19 jimare bikin, di vê rewşê de rêzik divê wiha were ragihandin:

Dim Team_Members(0 To 19) Wek String

Bi rastî, ji hêla xwerû ve, jimartina hêmanên rêzê ji 0-ê dest pê dike, û di danezana rêzê de, dibe ku navnîşa destpêkê bi tevahî neyê diyar kirin, mîna vê:

Dim Team_Members(19) Wek String

Berhevkarê VBA dê navnîşek weha wekî ragihandina rêzek ji 20 hêmanan bi nîşaneyên ji 0 heta 19 binirxîne.

Dema ku rêzikên Visual Basic ên piralî têne ragihandin heman qaîde derbas dibin. Wekî ku jixwe di yek ji mînakan de hatî xuyang kirin, dema ku rêzek du-alî tête diyar kirin, nîşaneyên pîvanên wê bi kêşek têne veqetandin:

Dim Jan_Sales_Figures(1 Ber 31, 1 Ber 5) Wek Dirav

Lêbelê, heke hûn ji bo her du pîvanên array indekek destpêkek diyar nekin û bi vî rengî ragihînin:

Dim Jan_Sales_Figures(31, 5) Wek Dirav

wê hingê ev têketin dê wekî rêzek du-alî were hesibandin, pîvana yekem a wê 32 hêmanên bi nîşaneyên ji 0 heta 31, û pîvana duyemîn a rêzê 6 hêmanên bi nîşaneyên ji 0 heya 5-an vedihewîne.

Array Dynamic

Hemî rêzikên di mînakên jorîn de jimareyek sabît a pîvanan hene. Lêbelê, di pir rewşan de em ji pêş de nizanin ka pîvana me divê çi be. Em dikarin bi ragihandina rêzek mezin, ku mezinahiya wê bê guman ji ya ku ji bo karê me hewce ye mezintir be, ji rewşê derkevin. Lê çareseriyek wusa dê gelek bîranînek zêde hewce bike û dikare bernameyê hêdî bike. Çareserek çêtir heye. Em dikarin rêzek dînamîkî bikar bînin - ev rêzek e ku mezinahiya wê di dema pêkanîna makro de çend caran dikare were danîn û guheztin.

Arrayek dînamîkî bi parantezê vala tê ragihandin, bi vî rengî:

Dim Team_Members() Wek String

Dûv re, hûn ê hewce bikin ku di dema darvekirina kodê de bi karanîna vebêjê pîvana rêzê ragihînin ReDim:

ReDim Team_Members (1 heta 20)

Û heke di dema pêkanîna kodê de hûn hewce ne ku mezinahiya rêzê dîsa biguhezînin, wê hingê hûn dikarin dîsa îfadeya ReDim bikar bînin:

Ger Team_Size > 20 Paşê ReDim Team_Members(1 To Team_Size) Biqede Ger

Bînin bîra xwe ku bi vî rengî mezinkirina rêzek dînamîkî dê bibe sedema windakirina hemî nirxên ku di rêzê de hatine hilanîn. Ji bo ku hûn daneyên berê di rêzê de hilînin, hûn hewce ne ku peyva sereke bikar bînin Biparêzewek jêrîn nîşan dide:

Ger Team_Size > 20 Hingê ReDim Team_Members biparêze (1 To Team_Size) Biqede Ger

Mixabin keyword Biparêze tenê dikare ji bo guheztina sînorê jorîn a pîvanek array were bikar anîn. Sînorê jêrîn ê rêzek bi vî rengî nayê guhertin. Di heman demê de, heke array xwedan pîvanên pirjimar be, wê hingê peyva key bikar bînin Biparêze, tenê pîvana paşîn a rêzê dikare were guheztin.

Leave a Reply