Kaip naudotis „Excel VBA Array“?
Makrokomandas galite paleisti naudodami „Visual Basic“ redaktorių, užvedę žymeklį į makrokomandą ir paspausdami klavišą F5, arba naudodami „Excel“, atidarę makrokomandų dialogo langą (ALT+F8), pasirinkdami paleisti makrokomandą ir spustelėdami Vykdyti. Geriausia paleisti šias makrokomandas iš „Visual Basic Editor“ naudojant Derinimas> Įeikite (paspausdami F8) kad galėtumėte stebėti, kaip jie dirba. Instrukcija Jei skirtuko Kūrėjas nėra juostelėje …
- Atidarykite „Excel“.
- Eikite į VBA redaktorių (paspauskite Alt + F11)
- Eikite į „Iškart“ langą. („Ctrl“ + G)
- Parašykite žemiau esantį kodą.
- Application.ShowDevTools = Tiesa
Kaip įterpti VBA kodą „Excel“
- Eiti į Programuotojas Skirtukas> Kodas Grupė> Visual Basic
- Spustelėkite Įdėti > Modulis.
- Bus atidarytas tuščias modulis.
- Į modulį įrašykite / įklijuokite pateiktą kodą
Kaip paleisti VBA kodą „Excel“
- Pasirinkite bet kur tarp kodo, Sub… End Sub
- Spustelėkite Vykdyti ir Vykdyti „Sub“ arba F5
Statiniai masyvo kintamieji
Užuot naudoję kelis unikalius kintamuosius informacijai saugoti, galite naudoti masyvo kintamąjį.
Kai žinote, kiek elementų reikia išsaugoti masyve, galite naudoti tokį statinį masyvo kintamąjį:
Kodas
Sub TestStaticArray ()
'išsaugo 10 vardų darbaknygėje masyvo kintamajame MyNames ()
Dim MyNames (nuo 1 iki 10) kaip eilutė “deklaruoja statinį masyvo kintamąjį
„Dim iCount As Integer“
„ICount“ = 1 į šią darbo knygą. Skaičiuoklės. Skaičius
MyNames (iCount) = ThisWorkbook.Sheets (iCount) .Pavadinimas
Derinti. Spausdinti „MyNames“ („iCount“)
Kitas „iCount“
Erase MyNames () “ištrina kintamąjį, atlaisvina šiek tiek atminties
Pabaiga Sub
Iššifruoti
Dim MyNames (nuo 1 iki 10) kaip eilutė
Mes matmenimis išvestume vieną patikrinamą „MyNames“ kaip eilutę, kurioje gali būti 10 elementų. Taigi „MyNames veriable“ yra masyvo tipas.
„Dim iCount As Integer“
Vieną kintamąjį „iCount“ paskelbėme kaip sveikąjį skaičių, kuriame gali būti tik skaitinio sveikojo tipo reikšmė
„ICount“ = 1 į šią darbo knygą. Skaičiuoklės. Skaičius
„ThisWorkbook.Sheets.Count“ suteiks mums lapų skaičių darbaknygėje. Ši darbo knyga reiškia darbo knygą, kurioje buvo parašytas kodas.
MyNames (iCount) = ThisWorkbook.Sheets (iCount) .Pavadinimas
Naudodami kilpą, kiekvieno lapo pavadinimą priskiriame vienam patikrinamam, vadinamam „Mano vardai“. „MyNames“ yra patikrinamas masyvo tipas, todėl jis išsaugos kiekvieno lapo pavadinimą kiekviename masyvo elemente.
Derinti. Spausdinti „MyNames“ („iCount“)
Tik priskyrus vertę kiekvienam masyvo elementui, ji bus atspausdinta tą patį „ImmediateWindow“, pagal numatytuosius nustatymus VBA lango apačioje. „ImmediateWindow“ galite peržiūrėti kiekvienos vertės priskyrimą ir parodyti jos vertę.
Kitas „iCount“
Kitas naudojamas norint pasakyti „For Loop“ programoje „Excel VBA“, pakartoti tą pačią užduotį, padidinant „iCount“ skaitiklį, kol „iCount“ darbaknygėje pasiekia bendrą lapų skaičių.
Dinaminiai masyvo kintamieji
Dinaminiai masyvo kintamieji yra naudingi, kai iš anksto nežinote, kiek elementų reikia saugoti informacijai.
Dinaminius masyvo kintamuosius deklaruojate kaip statinį masyvo kintamąjį, išskyrus tai, kad nepateikiate jokios informacijos apie masyvo dydį.
Aukščiau pateiktame pavyzdyje (Dim MyNames (nuo 1 iki 10) kaip eilutė) jei lapų skaičius didesnis nei 10, tai padarys klaidą, nes „MyNames“ negalės išsaugoti daugiau nei 10 elementų.
Kodas
Sub TestDynamicArray ()
'išsaugo visus darbaknygės pavadinimus masyvo kintamajame MyNames ()
Dim MyNames () As String “deklaruoja dinaminio masyvo kintamąjį
„Dim iCount As Integer“
Dim Max kaip sveikasis skaičius
Max = ThisWorkbook.Sheets.Count 'randa maksimalų masyvo dydį
„ReDim MyNames (1 to Max)“ deklaruoja reikiamo dydžio masyvo kintamąjį
„ICount“ = nuo 1 iki maks
MyNames (iCount) = ThisWorkbook.Sheets (iCount) .Pavadinimas
„MsgBox“ mano vardai („iCount“)
Kitas „iCount“
Erase MyNames () “ištrina kintamą turinį, atlaisvina šiek tiek atminties
Pabaiga Sub
Iššifruoti
Dim MyNames () kaip eilutė
Turime matmenis-vieną patikrinamą „MyNames“ kaip eilutę, kuri yra masyvo tipas, dėl atidaryto ir uždaryto parantezės, po tikrinamo pavadinimo, bet negalėsime joje saugoti jokių duomenų, nes nepateikėme jos viršutinio lygio.
„ReDim“ mano vardai (nuo 1 iki maks.)
„Redim“ naudojamas masyvui iš naujo nustatyti, dabar jis priskirs viršutinį masyvo tipo „Veriable“ lygį.
Tokiu atveju bendras lapų skaičius darbaknygėje (maks. = ThisWorkbook.Sheets.Count)
„MsgBox“ mano vardai („iCount“)
Paskutiniame pavyzdyje mes atspausdinome reikšmę kintamuosiuose iš karto, šį kartą spausdiname vertę „MessageBox“, kuri pasirodys taip …
Jei žinote, kad jums reikės masyvo kintamojo su 1000 elementų, naudokite statinį kintamąjį. Trūkumas yra tas, kad kiekvieną kartą atmintį naudosite 1000 elementų, taip pat tais atvejais, kai saugote tik informaciją apie 10 elementų. Jei naudojate dinaminio masyvo kintamąjį, atmintį naudosite efektyviau.
Kartais neįmanoma apskaičiuoti, koks turi būti masyvo kintamasis. Tokiais atvejais reikia atitinkamai padidinti masyvo kintamojo dydį. Kai naudojate a ReDim-teiginys, norint pakeisti masyvo kintamojo dydį, kintamojo turinys taip pat ištrinamas, kad nebūtų ištrintas kintamojo turinys, kai Redimas masyvo kintamąjį, kurį turėsite naudoti „ReDim Preserve“-pareiškimas.
Kodas
Antrasis „GetFileNameList“ ()
“išsaugo visus failų pavadinimus dabartiniame aplanke
Dim FolderFiles () kaip eilutė “deklaruoja dinaminio masyvo kintamąjį
Dim tmp As String, fCount As Integer
fSkaičius = 0
tmp = Dir ("D: \ Test \*.*")
Kol tmp tuščias
fSkaita = fSkaita + 1
„ReDim“ išsaugo aplankų failus (nuo 1 iki fCount)
'vėl paskelbia masyvo kintamąjį (dydis+1)
FolderFiles (fCount) = tmp
tmp = Rež
Wend
„MsgBox fCount &“ failų pavadinimai yra aplanke „& CurDir“
„Erase FolderFiles“ ištrina kintamą turinį, atlaisvina šiek tiek atminties
Pabaiga Sub
Iššifruoti
Dim FolderFiles () kaip eilutė
Turime matmenis iš vieno patikrinamo FolderFiles kaip eilutę, kuri yra masyvo tipas, dėl atidaryto ir uždarojo parantezės po tikrinamo pavadinimo, tačiau negalėsime jame saugoti jokių duomenų, nes nepateikėme jo viršutinio lygio.
tmp = Dir ("D: \ Test \*.*")
„Dir“ komanda veikia kaip tyrinėtojas, kuris gali turėti visų katalogo failų ir aplankų pavadinimus. Taip pat galite apriboti visus failus pagal tam tikrus kriterijus. Dir („D: \ Test \*. Pdf“) apribos visus failus iki tik PDF failų arba plėtinių.
Kol tmp tuščias
Šį kartą vietoj ciklo „Excel VBA“ kartojame tą patį veiksmą, naudodami „Excel VBA WHILE LOOP“, kur ciklo pabaigos kriterijai buvo nustatyti kaip tmp, nelygus tuščiam. Taigi, kol „tmp“ patikrinta vertė buvo, ciklas veiks.
„ReDim“ išsaugo aplankų failus (nuo 1 iki fCount)
Masyvo patikrintose „FolderFiles“ pradinėse pozicijose nėra viršutinio lygio. Bet kiekvieną kartą pakartojant, jis padidins viršutinį lygį naudodami „ReDim“ komandą. Pirmajame važiavime 1, tada 2… ir taip toliau, kol fCount. Tačiau kiekvieną kartą didinant viršutinį lygį, jis praras visus jau priskirtus kintamuosius. Naudodami komandą Išsaugoti, galime laikyti arba išsaugoti jau priskirtą vertę.
Wend
Wendas sakydavo „For Loops“ VBA, kad pakartotų tą pačią užduotį dar kartą, kol atitiks kriterijus.
„MsgBox fCount &“ failų pavadinimai yra aplanke „& CurDir“
Kiekvieną kartą kartojant, „fcout“ padidės +1, o galutinė vertė padidins tame kataloge / aplanke rastų failų skaičių. „CurDir“ komanda nurodo dabartinio katalogo pavadinimą. Šiuo atveju „D: \ Test“