Fylki í Visual Basic fyrir forrit

Fylki í Visual Basic for Application eru mannvirki sem venjulega geyma sett af tengdum breytum af sömu gerð. Fylkisfærslur eru aðgengilegar með tölulegri vísitölu þeirra.

Til dæmis er 20 manna teymi sem þarf að vista nöfn þeirra til að nota síðar í VBA kóða. Maður gæti einfaldlega lýst yfir 20 breytum til að halda hverju nafni, eins og svo:

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

En þú getur notað miklu einfaldari og skipulagðari hátt - geymt lista yfir nöfn liðsmeðlima í fylki af 20 breytum eins og Band:

Dimm Team_Members(1 Til 20) Sem strengur

Í línunni sem sýnd er hér að ofan höfum við lýst yfir fylki. Nú skulum við skrifa gildi fyrir hvern þátt þess, svona:

Team_Members(1) = "John Smith"

Viðbótarkostur við að geyma gögn í fylki, samanborið við að nota aðskildar breytur, kemur í ljós þegar nauðsynlegt er að framkvæma sömu aðgerðina á hverjum þætti fylkisins. Ef nöfn liðsmanna væru geymd í 20 aðskildum breytum, þá myndi það taka 20 línur af kóða að skrifa í hvert skipti til að framkvæma sömu aðgerðina á hverja þeirra. Hins vegar, ef nöfnin eru geymd í fylki, þá geturðu framkvæmt æskilega aðgerð með hverju þeirra með því að nota einfalda lykkju.

Hvernig það virkar er sýnt hér að neðan með kóðadæmi sem prentar nöfn hvers liðsmanns í röð í dálknum. A virkt Excel vinnublað.

Fyrir i = 1 til 20 frumur(i,1).Value = Team_Members(i) Next i

Augljóslega er mun minna fyrirferðarmikið og nákvæmara að vinna með fylki sem geymir 20 nöfn en að nota 20 aðskildar breytur. En hvað ef þessi nöfn eru ekki 20, heldur 1000? Og ef að auki þarf að halda eftirnöfnum og ættarnöfnum sérstaklega?! Ljóst er að bráðum verður algjörlega ómögulegt að meðhöndla slíkt gagnamagn í VBA kóða án hjálpar fylkis.

Fjölvíddar fylki í Excel Visual Basic

Visual Basic fylkin sem fjallað er um hér að ofan eru talin einvídd. Þetta þýðir að þeir geyma einfaldan nafnalista. Hins vegar geta fylki haft margar víddir. Til dæmis er hægt að líkja tvívíðu fylki við töflugildi.

Segjum að þú viljir vista daglegar sölutölur fyrir janúar fyrir 5 mismunandi lið. Þetta mun krefjast tvívíddar fylkis sem samanstendur af 5 settum mæligilda í 31 dag. Við skulum lýsa yfir fylki eins og þessu:

Dimmt Jan_Sales_Figures(1 Til 31, 1 Til 5) Sem gjaldmiðill

Til að fá aðgang að fylkisþáttum Jan_Sales_Figures, þú þarft að nota tvær vísitölur sem gefa til kynna mánaðardag og skipunarnúmer. Til dæmis, heimilisfang þáttar sem inniheldur sölutölur fyrir 2-ó lið fyrir 15 þ janúar væri skrifað svona:

Jan_Sales_Figures(15, 2)

Á sama hátt geturðu lýst yfir fylki með 3 eða fleiri víddum - bættu bara viðbótarvíddum við fylkisyfirlýsinguna og notaðu viðbótarvísitölur til að vísa í þætti þessarar fylkis.

Lýsa fylki í Excel Visual Basic

Fyrr í þessari grein skoðuðum við nokkur dæmi um að lýsa yfir fylki í VBA, en þetta efni á skilið að skoða nánar. Eins og sýnt er er hægt að lýsa yfir einvíddar fylki á þessa leið:

Dimm Team_Members(1 Til 20) Sem strengur

Slík yfirlýsing segir VBA þýðandanum að fylkið Liðsfélagar samanstendur af 20 breytum sem hægt er að nálgast á vísitölum frá 1 til 20. Hins vegar gætum við hugsað okkur að númera fylkisbreyturnar okkar frá 0 til 19, en þá ætti fylkið að vera lýst þannig:

Dimm Team_Members(0 Til 19) Sem strengur

Reyndar, sjálfgefið, byrjar númerun fylkisþátta frá 0, og í fylkisyfirlýsingunni gæti upphafsvísitalan alls ekki verið tilgreind, svona:

Dimm Team_Members(19) Sem strengur

VBA þýðandinn mun meðhöndla slíka færslu sem að lýsa yfir fylki af 20 þáttum með vísitölum frá 0 til 19.

Sömu reglur gilda þegar lýst er yfir margvíða Visual Basic fylki. Eins og þegar sést í einu af dæmunum, þegar lýst er yfir tvívíða fylki, eru vísitölur víddanna aðskildar með kommu:

Dimmt Jan_Sales_Figures(1 Til 31, 1 Til 5) Sem gjaldmiðill

Hins vegar, ef þú tilgreinir ekki upphafsvísitölu fyrir báðar víddir fylkisins og lýsir því yfir svona:

Dim Jan_Sales_Figures(31, 5) Sem gjaldmiðill

þá verður þessi færsla meðhöndluð sem tvívídd fylki, fyrsta víddin inniheldur 32 þætti með vísitölur frá 0 til 31, og önnur vídd fylkisins inniheldur 6 þætti með vísitölur frá 0 til 5.

Dynamic fylki

Öll fylki í ofangreindum dæmum hafa fastan fjölda vídda. Hins vegar vitum við í mörgum tilfellum ekki fyrirfram hvaða stærð fylki okkar ætti að vera. Við getum komist út úr ástandinu með því að lýsa yfir risastóru fylki, sem mun örugglega verða stærri en nauðsynlegt er fyrir verkefni okkar. En slík lausn mun krefjast mikils aukaminni og getur hægt á forritinu. Það er til betri lausn. Við getum notað kraftmikið fylki - þetta er fylki þar sem hægt er að stilla stærðina og breyta því hversu oft sem er meðan á makrói stendur.

Kvikt fylki er lýst yfir með tómum sviga, svona:

Dimm Team_Members() Sem strengur

Næst þarftu að lýsa yfir vídd fylkisins við keyrslu kóða með því að nota tjáninguna ReDim:

ReDim Team_Members(1 til 20)

Og ef þú þarft að breyta stærð fylkisins meðan á keyrslu kóðans stendur, þá geturðu notað ReDim tjáninguna aftur:

Ef Team_Size > 20 Þá ReDim Team_Members(1 To Team_Size) End If

Hafðu í huga að að breyta stærð kvikrar fylkis á þennan hátt mun leiða til þess að öll gildi sem eru geymd í fylkinu tapast. Til að geyma gögn sem þegar eru í fylkinu þarftu að nota lykilorðið Varðveitaeins og sýnt er hér að neðan:

Ef Team_Size > 20 Þá ReDim Preserve Team_Members(1 To Team_Size) End If

Því miður lykilorðið Varðveita er aðeins hægt að nota til að breyta efri mörkum fylkisvíddar. Ekki er hægt að breyta neðri mörkum fylkis á þennan hátt. Einnig, ef fylkið hefur margar víddir, notaðu þá leitarorðið Varðveita, aðeins er hægt að breyta stærðinni á síðustu vídd fylkisins.

Skildu eftir skilaboð