Araeau mewn Visual Basic ar gyfer Cymhwyso

Mae araeau mewn Visual Basic for Application yn strwythurau sydd fel arfer yn storio setiau o newidynnau cysylltiedig o'r un math. Ceir mynediad i gofnodion arae trwy eu mynegai rhifiadol.

Er enghraifft, mae tîm o 20 o bobl y mae angen cadw eu henwau i'w defnyddio'n ddiweddarach yn y cod VBA. Yn syml, gallai un ddatgan 20 newidyn i ddal pob enw, fel:

Dim Tîm_Member1 Fel Llinynnol Dim Team_Member2 Fel Llinynnol... Dim Team_Member20 Fel Llinynnol

Ond gallwch chi ddefnyddio ffordd llawer symlach a mwy trefnus - storio rhestr o enwau aelodau tîm mewn amrywiaeth o 20 newidyn fel Llinynnau:

Dim Team_Members(1 I 20) Fel Llinyn

Yn y llinell a ddangosir uchod, rydym wedi datgan arae. Nawr, gadewch i ni ysgrifennu gwerth i bob un o'i elfennau, fel hyn:

Team_Members(1) = "John Smith"

Daw mantais ychwanegol o storio data mewn arae, o'i gymharu â defnyddio newidynnau ar wahân, i'r amlwg pan fydd angen cyflawni'r un weithred ar bob elfen o'r arae. Pe bai enwau aelodau'r tîm yn cael eu storio mewn 20 newidyn ar wahân, yna byddai'n cymryd 20 llinell o god i'w hysgrifennu bob tro i gyflawni'r un weithred ar bob un ohonynt. Fodd bynnag, os yw'r enwau'n cael eu storio mewn amrywiaeth, yna gallwch chi gyflawni'r weithred a ddymunir gyda phob un ohonynt gan ddefnyddio dolen syml.

Dangosir sut mae'n gweithio isod gydag enghraifft o god sy'n argraffu enwau pob aelod o'r tîm yn olynol yng nghelloedd y golofn. A taflen waith Excel gweithredol.

Ar gyfer i = 1 I 20 Cell(i,1).Gwerth = Tîm_Aelodau(i) Nesaf i

Yn amlwg, mae gweithio gydag arae sy'n storio 20 enw yn llawer llai beichus ac yn fwy cywir na defnyddio 20 newidyn ar wahân. Ond beth os nad 20 yw'r enwau hyn, ond 1000? Ac os, yn ogystal, mae'n ofynnol cadw'r cyfenwau a'r patronymics ar wahân?! Mae'n amlwg y bydd yn dod yn gwbl amhosibl cyn bo hir i drin cymaint o ddata mewn cod VBA heb gymorth arae.

Araeau amlddimensiwn yn Excel Visual Basic

Mae'r araeau Visual Basic a drafodir uchod yn cael eu hystyried yn un dimensiwn. Mae hyn yn golygu eu bod yn storio rhestr syml o enwau. Fodd bynnag, gall araeau fod â dimensiynau lluosog. Er enghraifft, gellir cymharu arae dau ddimensiwn â grid o werthoedd.

Gadewch i ni ddweud eich bod am arbed y ffigurau gwerthiant dyddiol ar gyfer Ionawr ar gyfer 5 tîm gwahanol. Bydd hyn yn gofyn am arae dau ddimensiwn yn cynnwys 5 set o fetrigau am 31 diwrnod. Gadewch i ni ddatgan arae fel hyn:

Dim Jan_Sales_Ffigures(1 I 31, 1 I 5) Fel Arian Parod

I gael mynediad at elfennau arae Ion_Sales_Ffigurau, mae angen i chi ddefnyddio dau fynegai sy'n nodi diwrnod y mis a'r rhif gorchymyn. Er enghraifft, cyfeiriad elfen sy'n cynnwys ffigurau gwerthiant ar gyfer 2-o timau ar gyfer 15 fed Byddai Ionawr yn cael ei ysgrifennu fel hyn:

Ionawr_Sales_Ffigurau(15, 2)

Yn yr un modd, gallwch ddatgan arae gyda 3 dimensiwn neu fwy - dim ond ychwanegu dimensiynau ychwanegol at y datganiad arae a defnyddio mynegeion ychwanegol i gyfeirio at elfennau'r arae hon.

Datgan Araeau yn Excel Visual Basic

Yn gynharach yn yr erthygl hon, rydym eisoes wedi edrych ar sawl enghraifft o ddatgan araeau yn VBA, ond mae'r pwnc hwn yn haeddu edrych yn agosach. Fel y dangosir, gellir datgan arae un dimensiwn fel hyn:

Dim Team_Members(1 I 20) Fel Llinyn

Mae datganiad o'r fath yn dweud wrth y casglwr VBA bod yr amrywiaeth Tîm_Aelodau yn cynnwys 20 newidyn y gellir eu cyrchu mewn mynegeion o 1 i 20. Fodd bynnag, efallai y byddwn yn meddwl am rifo ein newidynnau arae o 0 i 19, ac os felly dylid datgan yr arae fel hyn:

Dim Team_Members(0 I 19) Fel Llinyn

Mewn gwirionedd, yn ddiofyn, mae rhifo elfennau arae yn dechrau o 0, ac yn y datganiad arae, efallai na fydd y mynegai cychwynnol yn cael ei nodi o gwbl, fel hyn:

Dim Team_Members(19) Fel Llinyn

Bydd y casglwr VBA yn trin cofnod o'r fath fel datgan amrywiaeth o 20 elfen gyda mynegeion o 0 i 19.

Mae'r un rheolau'n berthnasol wrth ddatgan araeau aml-ddimensiwn Visual Basic. Fel y dangoswyd eisoes yn un o’r enghreifftiau, wrth ddatgan arae dau ddimensiwn, mae mynegeion ei ddimensiynau’n cael eu gwahanu gan goma:

Dim Jan_Sales_Ffigures(1 I 31, 1 I 5) Fel Arian Parod

Fodd bynnag, os na fyddwch yn nodi mynegai cychwyn ar gyfer dau ddimensiwn yr arae a'i ddatgan fel hyn:

Dim Jan_Sales_Ffigures(31, 5) Fel Arian Parod

yna bydd y cofnod hwn yn cael ei drin fel arae dau ddimensiwn, y mae ei ddimensiwn cyntaf yn cynnwys 32 elfen gyda mynegeion o 0 i 31, ac mae ail ddimensiwn yr arae yn cynnwys 6 elfen gyda mynegeion o 0 i 5.

Araeau deinamig

Mae gan bob arae yn yr enghreifftiau uchod nifer sefydlog o ddimensiynau. Fodd bynnag, mewn llawer o achosion nid ydym yn gwybod ymlaen llaw pa faint y dylai ein casgliad fod. Gallwn fynd allan o'r sefyllfa trwy ddatgan amrywiaeth enfawr, y bydd eu maint yn sicr yn fwy na'r hyn sy'n angenrheidiol ar gyfer ein tasg. Ond bydd ateb o'r fath yn gofyn am lawer o gof ychwanegol a gall arafu'r rhaglen. Mae yna ateb gwell. Gallwn ddefnyddio arae ddeinamig - arae yw hon y gellir gosod ei maint a'i newid unrhyw nifer o weithiau yn ystod gweithredu macro.

Mae arae ddeinamig yn cael ei ddatgan gyda cromfachau gwag, fel hyn:

Dim Team_Members() Fel Llinyn

Nesaf, bydd angen i chi ddatgan dimensiwn yr arae wrth weithredu cod gan ddefnyddio'r mynegiant ReDim:

Tîm ReDim_Aelodau(1 i 20)

Ac os oes angen i chi newid maint yr arae eto yn ystod gweithredu'r cod, yna gallwch chi ddefnyddio'r mynegiant ReDim eto:

Os yw Team_Size > 20 Yna ReDim Team_Members(1 I Team_Size) yn Gorffen Os

Cofiwch y bydd newid maint arae ddeinamig yn y modd hwn yn arwain at golli'r holl werthoedd a storir yn yr arae. Er mwyn storio data sydd eisoes yn yr arae, mae angen i chi ddefnyddio'r allweddair Cadwfel y dangosir isod:

Os yw Team_Size > 20 Yna ReDim Preserve Team_Members(1 I Team_Size) yn Gorffen Os

Yn anffodus yr allweddair Cadw dim ond i newid ffin uchaf dimensiwn arae y gellir ei ddefnyddio. Ni ellir newid arffin isaf arae yn y modd hwn. Hefyd, os oes gan yr arae ddimensiynau lluosog, yna defnyddiwch yr allweddair Cadw, dim ond dimensiwn olaf yr arae y gellir ei newid maint.

Gadael ymateb