VBA ReDim - Apstrādājiet dinamiskos masīvus, izmantojot VBA ReDim Preserve

Satura rādītājs

Excel VBA ReDim paziņojums

VBA Redim paziņojums ir līdzīgs blāvajam paziņojumam, taču atšķirība ir tā, ka to izmanto, lai uzglabātu vai piešķirtu lielāku krātuves vietu vai samazinātu krātuves vietu, kas mainīgajam vai masīvam ir ar to, tagad ar paziņojumu tiek izmantoti divi svarīgi aspekti: Saglabāt, ja ar šo paziņojumu tiek izmantots saglabāšana, tas izveido jaunu masīvu ar dažādu izmēru un, ja saglabāšanu neizmanto kopā ar šo paziņojumu, tas vienkārši maina pašreizējā mainīgā masīva lielumu.

Masīvi ir svarīga VBA kodēšanas sastāvdaļa. Izmantojot masīvus, mēs varam uzglabāt vairākas vērtības tajā pašā mainīgajā, kuru mēs definējām. Tāpat kā tas, kā mēs deklarējam mainīgo, izmantojot vārdu “Dim”, mums ir jādeklarē masīva nosaukums, izmantojot arī “Dim”.

Lai paziņotu masīva nosaukumu, mums vispirms jāidentificē masīva veids, kuru mēs definēsim. Masīvos mums ir 5 veidi.

  1. Statiskais masīvs
  2. Dinamiskā masīva
  3. Viena dimensijas masīvs
  4. Divdimensiju masīvs
  5. Daudzdimensionāls masīvs

Statiskajā masīvā excel mēs jau iepriekš izlemsim masīva zemāko un augšējo vērtību, deklarējot mainīgo. Piemēram, aplūkojiet zemāk redzamo piemēru.

Kods:

Sub ReDim_Example1 () Dim MyArray (1 līdz 5) kā virknes beigu apakšsadaļa

Šeit MyArray ir masīva nosaukums, kas var turēt vērtību no 1 līdz 5. MyArray tajā var ievietot 5 dažādus rezultātus, piemēram, zemāk redzamo.

Kods:

Sub ReDim_Example1 () Dim MyArray (1 līdz 5) kā virkne MyArray (1) = "Sveiki" MyArray (2) = "Labs" MyArray (3) = "Rīts" MyArray (4) = "Ir" MyArray (5) " = "Jaukas dienas" beigu apakšsadaļa

Dinamiskā masīva ar ReDim paziņojumu

Bet dinamiskajā masīvā tas tā nav. Mēs jau iepriekš neizlemsim zemāko un augšējo vērtību; drīzāk mēs vienkārši definējam masīva nosaukumu un piešķiram datu tipu.

Sub ReDim_Example1 () Dim MyArray () kā virknes beigu apakšsadaļa

Lai masīva nosaukums būtu dinamisks, mums tas vispirms jādeklarē ar vārdu “Dim”, taču neizlemiet masīva lielumu savlaicīgi. Mēs tikai nosaucam masīvu ar tukšām vērtībām iekavās (). Ja masīvā nav iekļauts lielums, tas tiek uzskatīts par dinamisku masīvu.

Dim MyArray () kā virkne

Brīdī, kad iekavās minat masīva lielumu, tas kļūst par statisku masīvu. Aptumšojiet MyArray (no 1 līdz 5) kā virkni

Dinamiskajā masīvā mēs vienmēr mainām masīva izmēru, izmantojot kodu “ReDim” koda nākamajā rindā.

ReDim MyArray (no 1 līdz 6) kā virkne

Jebkura vērtība, kas iepriekšējās darbībās tika saglabāta masīva nosaukumā, ti, izmantojot paziņojumu “Dim”, ir nulle, un izmērs, kuru mēs deklarējām, izmantojot “ReDim”, kļūst par masīva jauno izmēru.

VBA Redim Statement izmantošanas piemēri

1. piemērs

Apskatiet “ReDim” paziņojuma praktiskas izmantošanas piemēru. Veiciet tālāk norādītās darbības, lai lietotu “ReDim”.

1. darbība: vispirms izveidojiet makro nosaukumu.

2. solis: pasludiniet masīva nosaukumu kā virkni.

Kods:

Sub ReDim_Example1 () Dim MyArray () kā virknes beigu apakšsadaļa

3. solis: Tagad izmantojiet vārdu “Redim” un piešķiriet masīva lielumu.

Kods:

Sub ReDim_Example1 () Dim MyArray () Kā virkne ReDim MyArray (1 līdz 3) Beigas Sub

4. solis: Tātad masīva nosaukumam “MyArray” šeit var būt līdz 3 vērtībām. Piešķiriet vērtību šiem 3 masīviem, piemēram, zemāk esošajam.

Kods:

Sub ReDim_Example1 () Dim MyArray () kā virkne ReDim MyArray (1 līdz 3) MyArray (1) = "Laipni lūdzam" MyArray (2) = "uz" MyArray (3) = "VBA" End Sub

Tātad pirmais masīvs ir vienāds ar vārdu “Welcome”, otrais masīvs ir vienāds ar vārdu “to”, bet trešais masīvs ir vienāds ar vārdu “VBA”.

5. solis: Tagad saglabājiet šīs masīva vērtības šūnās.

Kods:

Sub ReDim_Example1 () Dim MyArray () kā virkne ReDim MyArray (1 līdz 3) MyArray (1) = "Laipni lūdzam" MyArray (2) = "uz" MyArray (3) = "VBA" diapazons ("A1"). Vērtība = MyArray (1) diapazons ("B1"). Vērtība = MyArray (2) diapazons ("C1"). Vērtība = MyArray (3) End Sub

6. solis: ja palaižat šo kodu, šīm vērtībām jābūt attiecīgi A1, B1 un C1 šūnās.

2. piemērs - mainiet masīva izmēru, atceroties vecās vērtības.

Kad masīva nosaukumam ir piešķirtas vērtības, mēs varam arī mainīt izmērus jebkurā procedūras brīdī, izmantojot vārdu “ReDim Preserve”.

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

Iemesls, kāpēc mums jālieto vārds “saglabāt”, jo masīvam procedūrā jāatceras vecās masīva vērtības.

Brīdī, kad jūs ignorējat vārdu “saglabāt”, tas neatcerēsies vecās vērtības.

Lietas, kas šeit jāatceras

  • ReDim var turēt tikai masīva pēdējo vērtību, nevis daudzās vērtības. Piemēram, mēs nevaram izmantot šo kodu “ReDim Preserve MyArray (4–5)”. Tas izmetīs kļūdu.
  • Mēs nevaram ReDim statiskos blokus. Brīdī, kad iekavās piešķirat masīva lielumu, tas kļūst par statisku masīvu.
  • Izmantojot ReDim, mēs nevaram mainīt datu tipu. Masīvā var ievietot jebkuru datu tipu, kuru esam piešķīruši, deklarējot masīvu.

Interesanti raksti...