Etalaj nan Visual Basic pou Aplikasyon

Etalaj nan Visual Basic pou Aplikasyon yo se estrikti ki anjeneral estoke seri varyab ki gen rapò ak menm kalite a. Antre etalaj yo jwenn aksè pa endèks nimerik yo.

Pou egzanp, gen yon ekip 20 moun ki gen non yo bezwen sove pou itilize pita nan kòd VBA. Youn ta ka tou senpleman deklare 20 varyab pou kenbe chak non, tankou sa a:

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

Men, ou ka itilize yon fason ki pi senp ak pi òganize - sere yon lis non manm ekip yo nan yon etalaj de 20 varyab tankou Kòd:

Dim Team_Members(1 To 20) As String

Nan liy ki montre pi wo a, nou te deklare yon etalaj. Koulye a, ann ekri yon valè nan chak nan eleman li yo, tankou sa a:

Team_Members(1) = "Jan Smith"

Yon avantaj adisyonèl nan estoke done nan yon etalaj, konpare ak lè l sèvi avèk varyab separe, vin aparan lè li vin nesesè pou fè menm aksyon an sou chak eleman nan etalaj la. Si non manm ekip yo te estoke nan 20 varyab separe, Lè sa a, li ta pran 20 liy nan kòd yo ekri chak fwa fè menm aksyon an sou chak nan yo. Sepandan, si non yo estoke nan yon etalaj, Lè sa a, ou ka fè aksyon an vle ak chak nan yo lè l sèvi avèk yon bouk ki senp.

Ki jan li fonksyone montre pi ba a ak yon egzanp kòd ki enprime non chak manm ekip yo an sekans nan selil kolòn yo. A Fèy travay Excel aktif.

Pou i = 1 Pou 20 selil (i, 1). Valè = Team_Members (i) Next i

Li evidan, travay ak yon etalaj ki estoke 20 non se anpil mwens ankonbran ak pi egzak pase lè l sèvi avèk 20 varyab separe. Men, e si non sa yo pa 20, men 1000? Men, si, anplis, li oblije kenbe ti non yo ak patronimik separeman?! Li klè ke li pral byento vin konplètman enposib okipe tankou yon volim nan done nan kòd VBA san èd nan yon etalaj.

Etalaj miltidimansyonèl nan Excel Visual Basic

Etalaj Visual Basic yo diskite pi wo a yo konsidere kòm yon dimansyon. Sa vle di ke yo sere yon lis senp de non. Sepandan, etalaj ka gen plizyè dimansyon. Pou egzanp, yon etalaj ki genyen de dimansyon ka konpare ak yon griy ki gen valè.

Ann di ou vle sove chif lavant chak jou pou janvye pou 5 ekip diferan. Sa a pral mande pou yon etalaj ki genyen de dimansyon ki gen 5 seri mezi pou 31 jou. Ann deklare yon etalaj tankou sa a:

Dim Jan_Sales_Figures(1 Pou 31, 1 Pou 5) Kòm Lajan

Pou jwenn aksè nan eleman etalaj Jan_Sales_Figures, ou bezwen sèvi ak de endèks ki endike jou mwa a ak nimewo kòmandman an. Pou egzanp, adrès la nan yon eleman ki gen lavant figi pou 2-oh ekip pou 15yèm Janvye ta dwe ekri konsa:

Jan_Sales_Figures(15, 2)

Nan menm fason an, ou ka deklare yon etalaj ki gen 3 oswa plis dimansyon - jis ajoute dimansyon adisyonèl nan deklarasyon etalaj la epi sèvi ak endis adisyonèl pou fè referans a eleman yo nan etalaj sa a.

Deklare etalaj nan Excel Visual Basic

Byen bonè nan atik sa a, nou te deja gade plizyè egzanp sou deklarasyon etalaj nan VBA, men sijè sa a merite yon gade pi pre. Jan yo montre, yon etalaj yon sèl dimansyon ka deklare tankou sa a:

Dim Team_Members(1 To 20) As String

Tankou yon deklarasyon di VBA du a ke etalaj la Manm_Ekip yo konsiste de 20 varyab ki ka jwenn aksè nan endis soti nan 1 a 20. Sepandan, nou ta ka panse a nimewote varyab etalaj nou yo soti nan 0 a 19, nan ka sa a etalaj la ta dwe deklare tankou sa a:

Dim Team_Members(0 To 19) As String

An reyalite, pa default, nimero eleman etalaj la kòmanse soti nan 0, ak nan deklarasyon etalaj la, endèks inisyal la ka pa espesifye ditou, tankou sa a:

Dim Team_Members(19) As String

Konpilateur VBA a pral trete yon antre tankou deklare yon etalaj 20 eleman ak endis soti nan 0 a 19.

Menm règ yo aplike lè yo deklare etalaj Visual Basic miltidimansyonèl yo. Kòm deja montre nan youn nan egzanp yo, lè yo deklare yon etalaj ki genyen de dimansyon, endis dimansyon li yo separe pa yon vigil:

Dim Jan_Sales_Figures(1 Pou 31, 1 Pou 5) Kòm Lajan

Sepandan, si ou pa presize yon endèks kòmanse pou tou de dimansyon etalaj la epi deklare li tankou sa a:

Dim Jan_Sales_Figures(31, 5) Kòm Lajan

Lè sa a, antre sa a pral trete kòm yon etalaj ki genyen de dimansyon, premye dimansyon nan ki gen 32 eleman ak endis soti nan 0 a 31, ak dimansyon nan dezyèm nan etalaj la gen 6 eleman ak endis soti nan 0 a 5.

Etalaj dinamik

Tout etalaj nan egzanp ki anwo yo gen yon kantite fiks dimansyon. Sepandan, nan anpil ka nou pa konnen davans ki gwosè etalaj nou an ta dwe. Nou ka soti nan sitiyasyon an pa deklare yon etalaj gwo, gwosè a nan ki pral sètènman pi gwo pase sa nesesè pou travay nou an. Men, yon solisyon sa yo pral mande pou anpil memwa siplemantè epi li ka ralanti pwogram nan. Gen yon pi bon solisyon. Nou ka itilize yon etalaj dinamik - sa a se yon etalaj ki gen gwosè ka mete ak chanje nenpòt kantite fwa pandan ekzekisyon an nan yon makro.

Yon etalaj dinamik deklare ak parantèz vid, tankou sa a:

Dim Team_Members() As String

Apre sa, w ap bezwen deklare dimansyon etalaj la pandan ekzekisyon kòd lè l sèvi avèk ekspresyon an ReDim:

ReDim Team_Manm(1 rive 20)

Men, si pandan egzekisyon an nan kòd la ou bezwen chanje gwosè a nan etalaj la ankò, Lè sa a, ou ka itilize ekspresyon ReDim ankò:

Si Team_Size > 20 Lè sa a, Redim Team_Members (1 Pou Team_Size) Fini Si

Kenbe nan tèt ou ke redimansyonman yon etalaj dinamik nan fason sa a pral lakòz pèt tout valè ki estoke nan etalaj la. Yo nan lòd yo estoke done ki deja nan etalaj la, ou bezwen sèvi ak mo kle a Prezèvejan yo montre anba a:

Si Team_Size > 20 Lè sa a, ReDim Preserve Team_Members (1 Pou Team_Size) Fini Si

Malerezman mo kle a Prezève ka itilize sèlman pou chanje limit siperyè yon dimansyon etalaj. Limit pi ba a nan yon etalaj pa ka chanje nan fason sa a. Epitou, si etalaj la gen plizyè dimansyon, lè sa a itilize mo kle a Prezève, sèlman dènye dimansyon etalaj la ka redimansyone.

Kite yon Reply