Vargjet në Visual Basic për aplikim

Vargjet në Visual Basic për Aplikim janë struktura që zakonisht ruajnë grupe variablash të lidhur të të njëjtit lloj. Regjistrimet e vargjeve aksesohen nga indeksi i tyre numerik.

Për shembull, ekziston një ekip prej 20 personash, emrat e të cilëve duhet të ruhen për përdorim të mëvonshëm në kodin VBA. Dikush thjesht mund të deklarojë 20 variabla për të mbajtur secilin emër, si kjo:

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

Por ju mund të përdorni një mënyrë shumë më të thjeshtë dhe më të organizuar – ruani një listë me emrat e anëtarëve të ekipit në një grup prej 20 variablash si p.sh. Varg:

Dim Team_Members (1 deri në 20) Si varg

Në rreshtin e treguar më sipër, ne kemi deklaruar një grup. Tani le të shkruajmë një vlerë për secilin prej elementeve të tij, si kjo:

Team_Members(1) = "John Smith"

Një avantazh shtesë i ruajtjes së të dhënave në një grup, në krahasim me përdorimin e variablave të veçantë, bëhet i dukshëm kur bëhet e nevojshme të kryhet i njëjti veprim në çdo element të grupit. Nëse emrat e anëtarëve të ekipit do të ruheshin në 20 variabla të veçantë, atëherë do të duheshin 20 rreshta kodi për t'u shkruar çdo herë për të kryer të njëjtin veprim në secilën prej tyre. Sidoqoftë, nëse emrat ruhen në një grup, atëherë mund të kryeni veprimin e dëshiruar me secilën prej tyre duke përdorur një lak të thjeshtë.

Mënyra se si funksionon është demonstruar më poshtë me një shembull kodi që printon emrat e secilit anëtar të ekipit në mënyrë sekuenciale në qelizat e kolonës. A fletë pune aktive në Excel.

Për i = 1 deri në 20 qeliza (i, 1). Vlera = Anëtarët_Ekipi (i) Tjetra i

Natyrisht, puna me një grup që ruan 20 emra është shumë më pak e rëndë dhe më e saktë sesa përdorimi i 20 variablave të veçantë. Po sikur këta emra të mos jenë 20, por 1000? Dhe nëse përveç kësaj kërkohet të mbahen veçmas mbiemrat dhe patronimet?! Është e qartë se së shpejti do të bëhet krejtësisht e pamundur të trajtosh një vëllim të tillë të dhënash në kodin VBA pa ndihmën e një grupi.

Vargjet shumëdimensionale në Excel Visual Basic

Vargjet e Visual Basic të diskutuara më sipër konsiderohen njëdimensionale. Kjo do të thotë se ata ruajnë një listë të thjeshtë emrash. Megjithatë, vargjet mund të kenë dimensione të shumëfishta. Për shembull, një grup dy-dimensionale mund të krahasohet me një rrjet vlerash.

Le të themi se dëshironi të ruani shifrat e shitjeve ditore për janarin për 5 ekipe të ndryshme. Kjo do të kërkojë një grup dy-dimensionale të përbërë nga 5 grupe metrike për 31 ditë. Le të deklarojmë një grup si ky:

Dim Jan_Sales_Figures(1 deri në 31, 1 deri në 5) si monedhë

Për të hyrë në elementët e grupit Jan_Shitjet_Figura, duhet të përdorni dy indekse që tregojnë ditën e muajit dhe numrin e komandës. Për shembull, adresa e një elementi që përmban shifrat e shitjeve për 2-oh ekipet për 15-të Janari do të shkruhet kështu:

Jan_Sales_Figures(15, 2)

Në të njëjtën mënyrë, ju mund të deklaroni një grup me 3 ose më shumë dimensione - thjesht shtoni dimensione shtesë në deklaratën e grupit dhe përdorni indekse shtesë për t'iu referuar elementeve të këtij grupi.

Deklarimi i vargjeve në Excel Visual Basic

Më herët në këtë artikull, ne kemi parë tashmë disa shembuj të deklarimit të vargjeve në VBA, por kjo temë meriton një vështrim më të afërt. Siç tregohet, një grup njëdimensional mund të deklarohet si kjo:

Dim Team_Members (1 deri në 20) Si varg

Një deklaratë e tillë i tregon përpiluesit VBA se grupi Anëtarët e ekipit përbëhet nga 20 variabla që mund të aksesohen në indekset nga 1 në 20. Megjithatë, ne mund të mendojmë të numërojmë variablat tona të grupit nga 0 në 19, në të cilin rast vargu duhet të deklarohet si ky:

Dim Team_Members (0 deri në 19) Si varg

Në fakt, si parazgjedhje, numërimi i elementeve të grupit fillon nga 0, dhe në deklaratën e grupit, indeksi fillestar mund të mos specifikohet fare, si kjo:

Dim Team_Members(19) As String

Përpiluesi VBA do ta trajtojë një hyrje të tillë si deklarimin e një grupi prej 20 elementësh me indekse nga 0 në 19.

Të njëjtat rregulla zbatohen kur deklarohen vargje Visual Basic shumëdimensionale. Siç është treguar tashmë në një nga shembujt, kur deklaroni një grup dy-dimensional, indekset e dimensioneve të tij ndahen me presje:

Dim Jan_Sales_Figures(1 deri në 31, 1 deri në 5) si monedhë

Megjithatë, nëse nuk specifikoni një indeks fillestar për të dy dimensionet e grupit dhe e deklaroni atë si kjo:

Dim Jan_Sales_Figures(31, 5) Si monedhë

atëherë kjo hyrje do të trajtohet si një grup dydimensional, dimensioni i parë i të cilit përmban 32 elementë me indekse nga 0 në 31, dhe dimensioni i dytë i grupit përmban 6 elemente me indekse nga 0 në 5.

Vargjet dinamike

Të gjitha grupet në shembujt e mësipërm kanë një numër të caktuar dimensionesh. Megjithatë, në shumë raste ne nuk e dimë paraprakisht se çfarë madhësie duhet të jetë grupi ynë. Ne mund të dalim nga situata duke deklaruar një grup të madh, madhësia e të cilit me siguri do të jetë më e madhe se sa është e nevojshme për detyrën tonë. Por një zgjidhje e tillë do të kërkojë shumë memorie shtesë dhe mund të ngadalësojë programin. Ka një zgjidhje më të mirë. Ne mund të përdorim një grup dinamik - ky është një grup, madhësia e të cilit mund të vendoset dhe ndryshohet çdo herë gjatë ekzekutimit të një makro.

Një grup dinamik deklarohet me kllapa boshe, si kjo:

Dim Team_Members() As String

Më pas, do t'ju duhet të deklaroni dimensionin e grupit gjatë ekzekutimit të kodit duke përdorur shprehjen ReDim:

ReDim Team_Members (1 deri në 20)

Dhe nëse gjatë ekzekutimit të kodit duhet të ndryshoni përsëri madhësinë e grupit, atëherë mund të përdorni përsëri shprehjen ReDim:

Nëse Team_Size > 20 Atëherë ReDim Team_Members(1 në Team_Size) Përfundoni nëse

Mbani në mend se ndryshimi i madhësisë së një grupi dinamik në këtë mënyrë do të rezultojë në humbjen e të gjitha vlerave të ruajtura në grup. Për të ruajtur të dhënat tashmë në grup, duhet të përdorni fjalën kyçe ruajsiç tregohet më poshtë:

Nëse Team_Size > 20 then ReDim Reserve Team_Members(1 në Team_Size) Fund nëse

Fatkeqësisht, fjala kyçe ruaj mund të përdoret vetëm për të ndryshuar kufirin e sipërm të një dimensioni vargu. Kufiri i poshtëm i një grupi nuk mund të ndryshohet në këtë mënyrë. Gjithashtu, nëse grupi ka dimensione të shumëfishta, atëherë përdorni fjalën kyçe ruaj, vetëm dimensioni i fundit i grupit mund të ndryshohet.

Lini një Përgjigju