VBA ReDim | Pangasiwaan ang Mga Dynamic na Array gamit ang VBA ReDim Preserve

Pahayag ng VD ReDim ng Excel

VBA Redim ang pahayag ay katulad ng madilim na pahayag ngunit ang pagkakaiba ay ginagamit ito upang mag-imbak o maglaan ng mas maraming espasyo sa imbakan o bawasan ang imbakan na isang variable o isang array ay may kasama nito, ngayon mayroong dalawang mahahalagang aspeto na ginamit sa pahayag ay Panatilihin, kung mapangalagaan ay ginagamit sa pahayag na ito pagkatapos ay lumilikha ito ng isang bagong array na may iba't ibang laki at kung ang mapanatili ay hindi ginamit sa pahayag na ito pagkatapos ay binabago lamang nito ang laki ng array ng kasalukuyang variable.

Ang mga array ay isang mahalagang bahagi ng pag-coding ng VBA. Gamit ang mga array maaari nating maiimbak ang higit sa isang halaga sa parehong variable na tinukoy namin. Tulad ng kung paano namin ideklara ang variable gamit ang salitang "Dim" na katulad din na kailangan nating ideklara ang pangalan ng array sa pamamagitan din ng paggamit ng "Dim".

Upang maipahayag ang pangalan ng array, kailangan muna nating kilalanin ang uri ng array na tutukuyin namin. Sa mga array, mayroon kaming 5 uri.

  1. Static Array
  2. Dynamic na Array
  3. Isang Dimensional Array
  4. Dalawang Dimensyong Array
  5. Multi-Dimensional Array

Sa static na array sa excel, magpapasya kami ng mas mababang halaga at itaas na halaga ng array nang maaga habang idinideklara ang variable. Halimbawa, tingnan ang halimbawa sa ibaba.

Code:

 Sub ReDim_Example1 () Dim MyArray (1 To 5) Bilang String End Sub 

Dito MyArray ay ang pangalan ng array na maaaring magtaglay ng halaga mula 1 hanggang 5. Ang MyArray ay maaaring magkaroon ng 5 magkakaibang mga resulta dito tulad ng sa ibaba.

Code:

 Sub ReDim_Example1 () Dim MyArray (1 To 5) Bilang String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Have a" MyArray (5) = "Magandang Araw" End Sub 

Dynamic na Array na may ReDim Statement

Ngunit sa Dynamic na array hindi ito ang kaso, hindi kami magpapasya nang mas maaga ang mas mababang halaga at itaas na halaga sa halip ay tinutukoy lamang namin ang pangalan ng array at nagtatalaga ng uri ng data.

 Sub ReDim_Example1 () Dim MyArray () Bilang String End Sub 

Upang gawing pabago-bago ang pangalan ng array kailangan namin itong ideklara sa salitang "Dim" ngunit huwag magpasya nang maaga sa laki ng array. Pangalanan lang namin ang isang array na may mga walang laman na halaga sa loob ng panaklong (). Kapag ang array ay hindi kasama ang laki pagkatapos ay ito ay itinuturing bilang isang pabagu-bagong array.

Dim MyArray () Bilang String

Sa sandaling banggitin mo ang laki ng array sa loob ng panaklong ito ay nagiging isang static na array. Dim MyArray (1 hanggang 5) Bilang String

Sa pabagu-bagong array, palagi naming binabago ang laki ng laki ng array sa pamamagitan ng paggamit ng salitang "ReDim" sa susunod na linya ng code.

ReDim MyArray (1 hanggang 6) Bilang String

Ang anumang halagang nakaimbak sa pangalan ng array sa mga nakaraang hakbang hal ibig sabihin ang paggamit ng pahayag na "Dim" ay walang bisa, at ang laki na idineklara namin gamit ang "ReDim" ay nagiging bagong sukat ng array.

Mga halimbawa upang magamit ang VBA Redim Statement

Maaari mong i-download ang Template ng VBA ReDim Excel dito - VBA ReDim Excel Template

Halimbawa # 1

Tingnan ang halimbawa ng paggamit ng pahayag na "ReDim" nang praktikal. Sundin ang mga hakbang sa ibaba upang mailapat ang "ReDim".

Hakbang 1: Lumikha muna ng isang macro name.

Hakbang 2: Ipahayag ang isang pangalan ng array bilang isang string.

Code:

 Sub ReDim_Example1 () Dim MyArray () Bilang String End Sub 

Hakbang 3: Ngayon gamitin ang salitang "Redim" at italaga ang laki ng array.

Code:

 Sub ReDim_Example1 () Dim MyArray () Bilang String ReDim MyArray (1 To 3) End Sub 

Hakbang 4: Kaya ngayon ang pangalang array na "MyArray" ay maaaring magkaroon ng hanggang 3 halaga dito. Italaga ang halaga sa 3 arrays na ito tulad ng sa ibaba.

Code:

 Sub ReDim_Example1 () Dim MyArray () Bilang String ReDim MyArray (1 To 3) MyArray (1) = "Welcome" MyArray (2) = "sa" MyArray (3) = "VBA" End Sub 

Kaya, ang unang array ay katumbas ng salitang "Maligayang pagdating", ang pangalawang array ay katumbas ng salitang "to", at ang pangatlong array ay katumbas ng salitang "VBA".

Hakbang 5: Itabi ngayon ang mga halagang ito sa array sa mga cell.

Code:

 Sub ReDim_Example1 () Dim MyArray () Bilang String ReDim MyArray (1 To 3) MyArray (1) = "Welcome" MyArray (2) = "sa" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Saklaw ("B1"). Halaga = MyArray (2) Saklaw ("C1"). Halaga = MyArray (3) End Sub 

Hakbang 6: Kung patakbuhin mo ang code na ito dapat mayroon kaming mga halagang ito sa A1, B1, at C1 cell ayon sa pagkakabanggit.

Halimbawa # 2 - Baguhin ang laki ng Laki ng Array Habang Naaalala ang Mga Lumang Halaga.

Sa sandaling ang naitalang pangalan ng mga halaga na naitalaga maaari din naming baguhin ang laki sa anumang punto ng oras sa pamamaraan sa pamamagitan ng paggamit ng salitang "ReDim Preserve".

Ipagpalagay na idineklara mo na ang isang pangalan ng array at itinalaga ang mga halaga sa pangalan ng array na tulad ng sa ibaba.

Ngayon nais mong dagdagan ang haba ng array sa pamamagitan ng 2 ibig sabihin, 5. Sa kasong ito, maaari naming gamitin ang salitang VBA na "ReDim Preserve" upang baguhin ang laki ang haba ng array upang matandaan din ang mga lumang halaga.

Code:

 Sub ReDim_Example2 () Dim MyArray () Bilang String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "sa" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Saklaw na "Character 1" ("A1"). Halaga = MyArray (1) Saklaw ("B1"). Halaga = MyArray (2) Saklaw ("C1"). Halaga = MyArray (3) Saklaw ("D1"). Halaga = MyArray (4) End Sub 

Ngayon ay maaari kaming magtalaga ng dalawa pang mga halaga sa array.

Code:

 Sub ReDim_Example2 () Dim MyArray () Bilang String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "sa" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Saklaw na "Character 1" ("A1"). Halaga = MyArray (1) Saklaw ("B1"). Halaga = MyArray (2) Saklaw ("C1"). Halaga = MyArray (3) Saklaw ("D1"). Halaga = MyArray (4) End Sub 

Itabi ngayon ang mga halagang ito sa mga cell.

Code:

 Sub ReDim_Example2 () Dim MyArray () Bilang String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "sa" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Saklaw na "Character 1" ("A1"). Halaga = MyArray (1) Saklaw ("B1"). Halaga = MyArray (2) Saklaw ("C1"). Halaga = MyArray (3) Saklaw ("D1"). Halaga = MyArray (4) End Sub 

Patakbuhin ngayon ang macro at tingnan kung ano ang nangyayari

Nakuha namin ang bagong salita sa D1 cell.

Ang dahilan kung bakit kailangan naming gamitin ang salitang "panatilihin" dahil dapat tandaan ng array ang mga lumang halaga ng array sa pamamaraan.

Sa sandaling balewalain mo ang salitang "panatilihin" hindi nito maaalala ang mga dating halaga.

Mga Bagay na Dapat Tandaan

  • Maaari lamang hawakan ng ReDim ang huling halaga ng array, hindi ang maraming mga halaga. Halimbawa, hindi namin magagamit ang code na ito na "ReDim Preserve MyArray (4 hanggang 5)", itatapon nito ang error.
  • Hindi namin maaaring ReDim static arrays. Sa sandaling italaga mo ang laki ng array sa loob ng panaklong ito ay magiging isang static na array.
  • Gamit ang ReDim hindi namin mababago ang uri ng data. Maaaring hawakan ng array ang anuman ang uri ng data na aming itinalaga habang idinedeklara ang array.