VBA ReDim - Dünaamiliste massiivide käsitsemine VBA ReDim Preserve abil

Lang L: none (table-of-contents)

Exceli VBA ReDimi avaldus

VBA Redim lause on sarnane dim-avaldusega, kuid erinevus seisneb selles, et seda kasutatakse suurema salvestusruumi salvestamiseks või eraldamiseks või muutuja või massiivi salvestusruumi vähendamiseks. Nüüd on avaldisega kaks olulist aspekti Säilita, kui selle käsuga kasutatakse säilivust, loob see uue erineva suurusega massiivi ja kui säilitusega selle lausega ei kasutata, muudab see lihtsalt praeguse muutuja massiivi suurust.

Massiivid on VBA kodeerimise oluline osa. Massiivide abil saame samasse muutujasse, mille me defineerisime, salvestada rohkem kui ühe väärtuse. Nagu see, kuidas deklareerime muutujat sõna „Dim” abil, peame ka massiivi nime deklareerima, kasutades ka „Dim”.

Massiivi nime deklareerimiseks peame kõigepealt tuvastama massiivi tüübi, mille me määratleme. Massiivides on meil 5 tüüpi.

  1. Staatiline massiiv
  2. Dünaamiline massiiv
  3. Ühemõõtmeline massiiv
  4. Kahemõõtmeline massiiv
  5. Mitmemõõtmeline massiiv

Exceli staatilises massiivis otsustame muutuja deklareerimise korral massiivi alumise ja ülemise väärtuse aegsasti ette. Näiteks vaadake allpool toodud näidet.

Kood:

Sub ReDim_Example1 () Dim MyArray (1 kuni 5) String End Sub

Siin on MyArray massiivi nimi, mis võib hoida väärtust vahemikus 1 kuni 5. MyArray mahutab selles 5 erinevat tulemust nagu allpool.

Kood:

Sub ReDim_Example1 () Dim MyArray (1 kuni 5) stringina MyArray (1) = "Tere" MyArray (2) = "Hea" MyArray (3) = "Hommik" MyArray (4) = "Kas teil on" MyArray (5) " = "Tore päev" Lõppsub

Dünaamiline massiiv koos ReDimi avaldusega

Kuid dünaamilise massiivi puhul pole see nii. Me ei otsusta madalamat ja ülemist väärtust aegsasti; pigem määratleme lihtsalt massiivi nime ja määrame andmetüübi.

Sub ReDim_Example1 () Dim MyArray () String End Sub

Massiivinime muutmiseks dünaamiliseks peame selle esmalt deklareerima sõnaga „Hämar”, kuid ärge otsustage massiivi suurust aegsasti ette. Nimetame lihtsalt sulgudes tühjade väärtustega massiivi (). Kui massiiv ei sisalda suurust, käsitletakse seda dünaamilise massiivina.

Dim MyArray () stringina

Sel hetkel, kui mainite sulgudes oleva massiivi suurust, saab sellest staatiline massiiv. Dim MyArray (1 kuni 5) stringina

Dünaamilises massiivis muudame massiivi suurust alati, kasutades koodi järgmisel real sõna “ReDim”.

ReDim MyArray (1 kuni 6) stringina

Kõik väärtused, mis on eelmiste sammude korral massiivi nimele salvestatud, st kasutades käsku „Dim”, on null ja suuruseks, mille deklareerisime „ReDim” abil, saab massiivi uus suurus.

Näited VBA redimendi kasutamise kohta

Näide 1

Heitke pilk avalduse “ReDim” praktilisele kasutamisele. ReDimi rakendamiseks toimige järgmiselt.

1. samm: kõigepealt looge makro nimi.

2. samm: kuulutage massiivi nimi stringina.

Kood:

Sub ReDim_Example1 () Dim MyArray () String End Sub

3. samm: kasutage nüüd sõna „Redim” ja määrake massiivi suurus.

Kood:

Sub ReDim_Example1 () Dim MyArray () Stringina ReDim MyArray (1 kuni 3) End Sub

Samm 4: Nii et massiivi nimi "MyArray" mahutab siin kuni 3 väärtust. Määrake väärtus nendele 3 massiivile nagu allpool.

Kood:

Sub ReDim_Example1 () Dim MyArray () Stringina ReDim MyArray (1 kuni 3) MyArray (1) = "Tere tulemast" MyArray (2) = "kuni" MyArray (3) = "VBA" End Sub

Esimene massiiv on võrdne sõnaga "Welcome", teine ​​massiiv on võrdne sõnaga "to" ja kolmas massiiv on võrdne sõnaga "VBA".

5. samm: salvestage nüüd need massiivi väärtused lahtritesse.

Kood:

Sub ReDim_Example1 () Dim MyArray () stringina ReDim MyArray (1 kuni 3) MyArray (1) = "Tere tulemast" MyArray (2) = "kuni" MyArray (3) = "VBA" vahemik ("A1"). Väärtus = MyArray (1) vahemik ("B1"). Väärtus = MyArray (2) Range ("C1"). Väärtus = MyArray (3) End Sub

6. samm: kui käivitate selle koodi, peaksid need väärtused olema vastavalt lahtrites A1, B1 ja C1.

Näide # 2 - muutke massiivi suurust, kui mäletate vanu väärtusi.

Kui massiivi nimele on määratud väärtused, saame ka protseduuri mis tahes ajahetkel suurust muuta, kasutades sõna “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.

Põhjus, miks peame kasutama sõna „säilitada“, kuna massiiv peaks protseduuris meeles pidama vanu massiivi väärtusi.

Praegu, kui te ignoreerite sõna “säilitada”, ei mäleta see vanu väärtusi.

Siinkohal meenutavad asjad

  • ReDim mahutab ainult massiivi viimase väärtuse, mitte palju väärtusi. Näiteks ei saa me kasutada seda koodi “ReDim Preserve MyArray (4–5)”. See viskab vea.
  • Me ei saa staatilisi massiive ReDimi muuta. Hetkel, kui määrate sulgudesse massiivi suuruse, saab sellest staatiline massiiv.
  • ReDimi kasutades ei saa me andmetüüpi muuta. Massiiv võib mahutada mis tahes andmetüübi, mille oleme massiivi deklareerimisel omistanud.

Huvitavad Artiklid...