Satura rādītājs
Masīvs ir mainīgais, kurā tiek saglabāti vienāda veida dati. Ja tajā ir tikai viena datu rinda vai viena datu sleja, to sauc par viendimensiju masīvu. Tomēr, ja tajā ir vairāk nekā viena rinda un sleja, to sauc par 2D masīvu. Mēs izmantojam ReDim lai mainītu masīva lielumu VBA. Turklāt mēs izmantojam Saglabāt atslēgas vārdu ar ReDim lai saglabātu vecos datus neskartus. Šajā rakstā tiks parādīts. 2 ātri veidi, kā " ReDim Preserve " a 2D masīvs vietnē Excel VBA .
Lejupielādēt Practice Workbook
Makroreakcija uz ReDim Preserve 2D.xlsm
2 ērtas pieejas, lai Excel VBA programmā ReDim saglabātu 2D masīvu
Šī ir pamatdatu kopa, kas izveidota no 2D masīvs ar trim rindām un divām kolonnām. Vispirms izveidosim šo masīvu. Pēc tam šim masīvam pievienosim vēl vienu kolonnu. Mēs izmantosim " ReDim Preserve ", lai to izdarītu. Turklāt mēs parādīsim, kas notiks, ja mēs to neizmantosim.
Pēc noklusējuma mēs varam mainīt tikai masīva pēdējo dimensiju (t. i., kolonnas vai augšējo robežu). Mēs transponēsim masīvu, pēc tam mainīsim pēdējo dimensiju un tad atkal transponēsim, lai mainītu abas masīva dimensijas. 2D masīvs programmā Excel VBA.
1. ReDim Saglabāt pēdējo dimensiju 2D masīvs
Vispirms mēs definēsim 2D masīvs kā dinamisku. Tad, izmantojot ReDim izveidosim masīvu ar trim rindām un divām kolonnām. Visbeidzot, mēs izmantosim komandu ReDim paziņojums vēlreiz ar Saglabāt atslēgvārds lai palielinātu divdimensiju masīva augšējo robežu.
Soļi:
- Lai sāktu, nospiediet ALT+F11 lai parādītu VBA modulis Alternatīvi to var izdarīt no loga Izstrādātājs cilne → izvēlieties Visual Basic .
- Tad no Ievietot cilne → izvēlieties Modulis . Šeit ievadīsim VBA kodu.
- Tālāk ierakstiet šādu kodu Modulis logs.
Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub
VBA koda sadalījums
- Pirmkārt, mēs saucam Apakšprocedūra " Redim_Preserve_2D_Array_Row ".
- Tad mēs deklarējam mainīgo Our_Array kā dinamisku masīvu.
- Tālāk mēs definējam masīva lielumu. Apakšējā robeža ir šāda. 3 , augšējā robeža ir 2 , un abas sākas no 1 .
- Pēc tam masīvam tiek piešķirtas vērtības.
- Pēc tam mēs ievadām vērtības C6:D8 šūnu diapazons.
- Pēc tam izpildīsim kodu.
- Tātad, Saglabāt . Modulis un nospiediet Palaist .
- Rezultātā tas atgriezīs vērtības definētajiem šūnu diapazoniem. Mēs redzam, ka " Rachel " ir rindā 1 un kolonnu 1 pozīciju, kas definēta kā ( 1,1 ) VBA kodā.
- Tagad mainīsim masīva lielumu.
- Pievienojiet šo iepriekšējam kodam un noņemiet pirmo Range.Value paziņojums . turklāt, kā izskatās kods, varat redzēt zemāk redzamajā momentuzņēmumā.
ReDim Our_Array(1 līdz 3, 1 līdz 3) Our_Array(1, 3) = "Teksasa" Our_Array(2, 3) = "Misisipi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array
- Šeit mēs esam palielinājuši augšējo robežu no ( 1 Uz 2 ) uz ( 1 Uz 3 ), ko 1 .
- Pēc tam mēs esam pievienojuši vērtības masīvam.
- Tagad, ja mēs izpildīsim šo kodu, redzēsim, ka iepriekšējās vērtības netiek saglabātas. Tas atgriezīs tukšas iepriekšējās vērtības.
- Tagad mēs varam to novērst, pievienojot Saglabāt atslēgvārdu uz ReDim paziņojums .
- Visbeidzot, mūsu pilnais kods būs šāds.
Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =Our_Array End Sub
- Tagad, ja mēs Palaist šo kodu, tad izvades rezultāts būs šāds. Tādējādi mēs " ReDim Preserve " pēdējā dimensija 2D masīvs programmā Excel VBA.. Tagad nākamā metode parādīs, kā " ReDim Preserve " un mainiet abu masīva dimensiju lielumu.
Lasīt vairāk: VBA, lai iegūtu unikālas vērtības no kolonnas masīvā programmā Excel (3 kritēriji)
Līdzīgi lasījumi
- Kā nosaukt tabulas masīva nosaukumu programmā Excel (ar vienkāršiem soļiem)
- Excel VBA, lai nolasītu CSV failu masīvā (4 ideāli piemēri)
- Kā konvertēt diapazonu uz masīvu programmā Excel VBA (3 veidi)
- Excel VBA: dubultzīmju noņemšana no masīva (2 piemēri)
2. ReDim Saglabāt abus izmērus 2D masīvs programmā Excel VBA
Šajā pēdējā metodē mēs parādīsim, kā mainīt izmēru un " ReDim Preserve " 2D masīvs . Šeit mēs izmantosim VBA Transponēt funkciju, lai mainītu masīva apakšējās robežas lielumu. Ja mēs mēģinātu mainīt masīva apakšējās robežas lielumu, izmantojot pirmo metodi, tad mēs redzētu " Indekss ārpus diapazona " kļūda. Tagad, bez liekas kavēšanās, apskatīsim, kā mēs varam to novērst un sasniegt savu mērķi.
Soļi:
- Pirmkārt, kā parādīts pirmajā metodē , uz augšu izcelt Modulis logs.
- Otrkārt, pirmajā kodā pievienojiet šādas koda rindas.
Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array
- Turklāt pēdējās metodes kods izskatās šādi.
Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array=Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub
VBA koda sadalījums
- Pirmkārt, mēs saucam Apakšprocedūra " ReDim_Preserve_2D_Array_Both_Dimensions ".
- Tad pārējie kodi līdz pat VBA Transponēt funkcija ir tāda pati kā pirmajā kodā.
- Šeit mēs transponējam masīvu.
- Tad mēs palielinām masīva augšējo robežu.
- Pēc tam mēs vēlreiz transponējam masīvu. Tāpēc galu galā tas mainīs apakšējo robežu.
- Pēc tam ievadām mainītā izmēra masīva vērtības, saglabājot vecos datus.
- Visbeidzot, mēs ierakstām vērtības šūnu diapazonā C6:E9 .
- Pēc tam, kā parādīts pirmajā metodē , Palaist šo kodu.
- Tādējādi mēs varam vizualizēt, kā kods saglabā a 2D masīvs izmantojot " ReDim Preserve " un VBA Transponēt funkcija.
Lasīt vairāk: VBA, lai transponētu masīvu programmā Excel (3 metodes)
Lietas, kas jāatceras
- ReDim Preserve nevar mainīt masīva apakšējo robežu. Lai to izdarītu, mums ir jāizmanto Transponēt funkcija.
- Mēs varam izmantot tikai ReDim uz dinamiskiem masīviem.
Secinājums
Mēs esam parādījuši divus ātrus veidus, kā " ReDim Preserve " a 2D masīvs Ja jums rodas kādas problēmas saistībā ar šīm metodēm vai ja jums ir kādas atsauksmes par mani, lūdzu, komentējiet zemāk. Turklāt varat apmeklēt mūsu vietni. ExcelWIKI par vairāk ar Excel saistītiem rakstiem. Paldies par lasīšanu, turpiniet izcilību!