Arrays fil Visual Basic għall-Applikazzjoni

Arrays f'Visual Basic għall-Applikazzjoni huma strutturi li tipikament jaħżnu settijiet ta' varjabbli relatati tal-istess tip. Daħliet Array huma aċċessati mill-indiċi numeriku tagħhom.

Pereżempju, hemm tim ta '20 persuna li l-ismijiet tagħhom jeħtieġ li jiġu ffrankati għal użu aktar tard fil-kodiċi VBA. Wieħed jista 'sempliċement jiddikjara 20 varjabbli biex iżomm kull isem, bħal dan:

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

Imma tista' tuża mod ħafna aktar sempliċi u organizzat - aħżen lista ta' ismijiet ta' membri tat-tim f'firxa ta' 20 varjabbli bħal String:

Dim Team_Members(1 To 20) As String

Fil-linja murija hawn fuq, aħna ddikjarajna firxa. Issa ejja nikteb valur għal kull wieħed mill-elementi tiegħu, bħal dan:

Team_Members(1) = "John Smith"

Vantaġġ addizzjonali tal-ħażna tad-dejta f'array, meta mqabbel mal-użu ta 'varjabbli separati, isir evidenti meta jsir meħtieġ li titwettaq l-istess azzjoni fuq kull element tal-array. Jekk l-ismijiet tal-membri tat-tim kienu maħżuna f'20 varjabbli separati, allura jkun hemm bżonn 20 linja ta 'kodiċi biex tikteb kull darba biex twettaq l-istess azzjoni fuq kull wieħed minnhom. Madankollu, jekk l-ismijiet huma maħżuna f'firxa, allura tista 'twettaq l-azzjoni mixtieqa b'kull wieħed minnhom billi tuża linja sempliċi.

Kif taħdem huwa muri hawn taħt b'eżempju ta 'kodiċi li jistampa l-ismijiet ta' kull membru tat-tim b'mod sekwenzjali fiċ-ċelloli tal-kolonna. A worksheet attiv ta' Excel.

Għal i = 1 Sa 20 Ċellula (i,1).Valur = Team_Members (i) Li jmiss i

Ovvjament, li taħdem ma 'firxa li taħżen 20 isem hija ħafna inqas ingombranti u aktar preċiża milli tuża 20 varjabbli separat. Imma x'jiġri jekk dawn l-ismijiet mhumiex 20, iżda 1000? U jekk, barra minn hekk, huwa meħtieġ li jinżammu l-kunjomijiet u patronimiċi separatament?! Huwa ċar li dalwaqt se jsir kompletament impossibbli li jiġi mmaniġġjat tali volum ta 'data fil-kodiċi VBA mingħajr l-għajnuna ta' firxa.

Arrays multidimensjonali fl-Excel Visual Basic

L-arrays Visual Basic diskussi hawn fuq huma meqjusa bħala waħda dimensjonali. Dan ifisser li jaħżnu lista sempliċi ta’ ismijiet. Madankollu, arrays jista 'jkollhom dimensjonijiet multipli. Pereżempju, firxa ta 'żewġ dimensjonijiet tista' titqabbel ma 'gradilja ta' valuri.

Ejja ngħidu li trid tiffranka ċ-ċifri tal-bejgħ ta' kuljum għal Jannar għal 5 timijiet differenti. Dan se jeħtieġ firxa bidimensjonali li tikkonsisti minn 5 settijiet ta 'metriċi għal 31 jum. Ejja niddikjaraw firxa bħal din:

Dim Jan_Sales_Figures(1 Sa 31, 1 Sa 5) Bħala Munita

Biex taċċessa l-elementi tal-firxa Jan_Sales_Figures, trid tuża żewġ indiċi li jindikaw il-jum tax-xahar u n-numru tal-kmand. Per eżempju, l-indirizz ta 'element li fih ċifri tal-bejgħ għal 2-oh timijiet għal 15 th Jannar ikun miktub hekk:

Jan_Sales_Figures(15, 2)

Bl-istess mod, tista 'tiddikjara firxa bi 3 dimensjonijiet jew aktar - sempliċement żid dimensjonijiet addizzjonali mad-dikjarazzjoni tal-firxa u uża indiċijiet addizzjonali biex tirreferi għall-elementi ta' din il-firxa.

Tiddikjara Arrays f'Excel Visual Basic

Aktar kmieni f'dan l-artikolu, diġà ħares lejn diversi eżempji ta 'dikjarazzjoni ta' arrays f'VBA, iżda dan is-suġġett jistħoqqlu ħarsa aktar mill-qrib. Kif muri, firxa ta’ dimensjoni waħda tista’ tiġi ddikjarata hekk:

Dim Team_Members(1 To 20) As String

Dikjarazzjoni bħal din tgħid lill-kompilatur VBA li l-firxa Team_Membri jikkonsisti f'20 varjabbli li jistgħu jiġu aċċessati f'indiċi minn 1 sa 20. Madankollu, nistgħu naħsbu li ngħaddu l-varjabbli tal-array tagħna minn 0 sa 19, f'liema każ il-firxa għandha tiġi ddikjarata hekk:

Dim Team_Members(0 To 19) As String

Fil-fatt, b'mod awtomatiku, in-numerazzjoni ta 'elementi ta' firxa tibda minn 0, u fid-dikjarazzjoni ta 'array, l-indiċi inizjali jista' ma jiġi speċifikat xejn, bħal dan:

Dim Team_Members(19) As String

Il-kompilatur tal-VBA se jittratta tali dħul bħala li jiddikjara firxa ta '20 element b'indiċi minn 0 sa 19.

L-istess regoli japplikaw meta jiġu ddikjarati arrays Visual Basic multidimensjonali. Kif diġà muri f'wieħed mill-eżempji, meta tiddikjara firxa bidimensjonali, l-indiċi tad-dimensjonijiet tagħha huma separati b'virgola:

Dim Jan_Sales_Figures(1 Sa 31, 1 Sa 5) Bħala Munita

Madankollu, jekk ma tispeċifikax indiċi tal-bidu għaż-żewġ dimensjonijiet tal-firxa u tiddikjarah hekk:

Dim Jan_Sales_Figures(31, 5) Bħala Munita

allura din l-entrata tiġi ttrattata bħala array bidimensjonali, li l-ewwel dimensjoni tagħha fiha 32 element b'indiċi minn 0 sa 31, u t-tieni dimensjoni tal-firxa fiha 6 elementi b'indiċi minn 0 sa 5.

Matriċi dinamiċi

L-arrays kollha fl-eżempji ta 'hawn fuq għandhom numru fiss ta' dimensjonijiet. Madankollu, f'ħafna każijiet ma nafux minn qabel x'daqs għandu jkun il-firxa tagħna. Nistgħu noħorġu mis-sitwazzjoni billi niddikjaraw firxa enormi, li d-daqs tagħha ċertament se jkun akbar milli meħtieġ għall-kompitu tagħna. Iżda soluzzjoni bħal din se teħtieġ ħafna memorja żejda u tista 'tnaqqas il-programm. Hemm soluzzjoni aħjar. Nistgħu nużaw firxa dinamika - din hija firxa li d-daqs tagħha jista 'jiġi ssettjat u mibdul kull numru ta' drabi matul l-eżekuzzjoni ta 'makro.

Array dinamiku huwa ddikjarat b'parentesi vojta, bħal dan:

Dim Team_Members() As String

Sussegwentement, ser ikollok bżonn tiddikjara d-dimensjoni tal-firxa waqt l-eżekuzzjoni tal-kodiċi billi tuża l-espressjoni ReDim:

ReDim Team_Membri (1 sa 20)

U jekk waqt l-eżekuzzjoni tal-kodiċi għandek bżonn tibdel id-daqs tal-firxa mill-ġdid, allura tista 'terġa' tuża l-espressjoni ReDim:

Jekk Team_Size > 20 Imbagħad ReDim Team_Members(1 To Team_Size) Tmiem Jekk

Żomm f'moħħok li d-daqs tal-firxa dinamika b'dan il-mod se jirriżulta fit-telf tal-valuri kollha maħżuna fil-firxa. Sabiex taħżen id-dejta diġà fil-firxa, trid tuża l-kelma prinċipali Ippreservakif muri hawn taħt:

Jekk Team_Size > 20 Imbagħad ReDim Ippreserva Team_Members(1 To Team_Size) Tmiem Jekk

Sfortunatament il-keyword Ippreserva jista' jintuża biss biex jinbidel il-limitu ta' fuq ta' dimensjoni ta' firxa. Il-limitu t'isfel ta' firxa ma jistax jinbidel b'dan il-mod. Ukoll, jekk il-firxa għandha dimensjonijiet multipli, imbagħad tuża l-keyword Ippreserva, l-aħħar dimensjoni biss tal-firxa tista 'tiġi ddaqs mill-ġdid.

Ħalli Irrispondi