Masīva mainīgie, izmantojot VBA programmā Microsoft Excel 2010

Satura rādītājs:

Anonim

Kā izmantot Excel VBA masīvu?

Makro var palaist vai nu no Visual Basic redaktora, novietojot kursoru makro un nospiežot taustiņu F5, vai arī no programmas Excel, atverot dialoglodziņu Makro (ALT+F8), izvēloties makro, kas jāizpilda, un noklikšķinot uz Palaist. Vislabāk ir palaist šos makro no Visual Basic Editor, izmantojot Atkļūdošana> solis iekšā (nospiežot F8) lai jūs varētu skatīties, kā viņi strādā. Instrukcija Ja cilnē Izstrādātājs nav lentes …

  • Atveriet programmu Excel.
  • Dodieties uz VBA redaktoru (nospiediet Alt + F11)
  • Dodieties uz tūlītēju logu. (Ctrl + G)
  • Ierakstiet zemāk kodu.
    • Application.ShowDevTools = Patiesa

Kā ievietot VBA kodu programmā Excel

  • Iet uz Izstrādātājs Tab> Kods Grupa> Visual Basic
  • Klikšķis Ievietot > Modulis.
  • Atvērs jums tukšu moduli.
  • Ierakstiet / ielīmējiet norādīto kodu šajā modulī

Kā palaist VBA kodu programmā Excel

  • Atlasiet jebkurā vietā starp kodu, Sub… End Sub
  • Noklikšķiniet uz Palaist & Palaist Sub vai F5

Statiskie masīva mainīgie

Tā vietā, lai informācijas glabāšanai izmantotu vairākus unikālus mainīgos, varat izmantot masīva mainīgo.

Kad zināt, cik elementu jums jāglabā masīvā, varat izmantot šādu statisku masīva mainīgo:

Kods


Sub TestStaticArray ()
'saglabā 10 vārdus darbgrāmatā masīva mainīgajā MyNames ()
Dim MyNames (no 1 līdz 10) Kā virkne ”deklarē statisku masīva mainīgo
Dim iCount kā vesels skaitlis
ICount = 1 uz šo darbagrāmatu. Izklājlapas
MyNames (iCount) = ThisWorkbook.Sheets (iCount). Nosaukums
Atkļūdošana. Drukāt manus vārdus (iCount)
Nākamais iCount
Erase MyNames () 'dzēš mainīgo saturu, atbrīvo nedaudz atmiņas
Beigt apakš

Atšifrēt

Dim MyNames (no 1 līdz 10) kā virkne

Mums ir dimensija-izeja viens pārbaudāms MyNames kā virkne, kurā var būt 10 vienumi. Tātad pārbaudāmie MyNames ir masīva veidi.

Dim iCount kā vesels skaitlis

Mēs esam deklarējuši vienu mainīgo iCount kā veselu skaitli, kas var saturēt tikai skaitlisku veselu skaitli

ICount = 1 uz šo darbagrāmatu. Izklājlapas

ThisWorkbook.Sheets.Count dos mums lapu skaitu darbgrāmatā. Šī darba grāmata attiecas uz darbgrāmatu, kurā tika rakstīts kods.

MyNames (iCount) = ThisWorkbook.Sheets (iCount). Nosaukums

Izmantojot cilpu, mēs piešķiram katras lapas nosaukumu vienam pārbaudāmam vārdam Mani vārdi. MyNames ir pārbaudāms masīva veids, tāpēc tas saglabās katras lapas nosaukumu katrā masīva vienībā.

Atkļūdošana. Drukāt manus vārdus (iCount)

Tūlīt pēc vērtības piešķiršanas katram masīva vienumam tas tiks izdrukāts ImmediateWindow, pēc noklusējuma VBA loga apakšdaļā. Jūs varat apskatīt katras vērtības piešķiršanu un parādīt tās vērtību ImmediateWindow.

Nākamais iCount

Tālāk tiek izmantots, lai Excel VBA norādītu cilpai For Loop, lai atkārtotu to pašu uzdevumu, palielinot iCount Counter, līdz iCount darbgrāmatā sasniedza kopējo lapu skaitu.

Dinamisko masīvu mainīgie

Dinamiskie masīva mainīgie ir noderīgi, ja iepriekš nezināt, cik elementu jums ir jāglabā.

Jūs deklarējat dinamisko masīvu mainīgos tāpat kā statiskus masīvu mainīgos, izņemot to, ka nesniedzat nekādu informāciju par masīva lielumu.

Iepriekš minētajā piemērā (Dim MyNames (no 1 līdz 10) kā virkne) ja lapu skaits ir lielāks par 10, tas radīs kļūdu, jo MyNames nevarēs saglabāt vairāk par 10 vienumiem.

Kods

Sub TestDynamicArray ()
'saglabā visus vārdus darbgrāmatā masīva mainīgajā MyNames ()
Dim MyNames () kā virkne ”deklarē dinamiskā masīva mainīgo
Dim iCount kā vesels skaitlis
Dim Max kā vesels skaitlis
Maks. = ThisWorkbook.Sheets.Count 'atrod maksimālo masīva izmēru
ReDim MyNames (1 to Max) 'deklarē masīva mainīgo ar nepieciešamo izmēru
ICount = 1 līdz maks
MyNames (iCount) = ThisWorkbook.Sheets (iCount). Nosaukums
MsgBox MyNames (iCount)
Nākamais iCount
Dzēst manus vārdus () 'dzēš mainīgo saturu, atbrīvo nedaudz atmiņas
Beigt apakš

Atšifrēt

Dim MyNames () kā virkne

Mums ir dimensija-izeja viens verificējams MyNames kā virkne, kas ir masīva tips, atverot un aizverot Paranthesis, pēc pārbaudāmā nosaukuma, bet nevarēsim tajā saglabāt nekādus datus, jo neesam norādījuši tā augšējo līmeni.

ReDim MyNames (no 1 līdz maks.)

Redim tiek izmantots, lai atkārtoti izmērītu masīvu, tagad tam tiks piešķirts masīva tipa Veriable augšējais līmenis.

Šajā gadījumā kopējais lapu skaits darbgrāmatā (Max = ThisWorkbook.Sheets.Count)

MsgBox MyNames (iCount)

Pēdējā piemērā mēs esam drukājuši vērtību mainīgajos tūlītējā logā, šoreiz mēs drukājam vērtību MessageBox, kas parādīsies šādi …

Ja zināt, ka jums būs nepieciešams masīva mainīgais ar 1000 vienumiem, izmantojiet statisku mainīgo. Negatīvie ir tas, ka jūs katru reizi izmantosit atmiņu 1000 vienībām, arī gadījumos, kad tiek saglabāta tikai informācija par 10 vienībām. Ja izmantojat dinamisko masīvu mainīgo, jūs izmantojat atmiņu efektīvāk.

Dažreiz nav iespējams aprēķināt, cik lielam jābūt masīva mainīgajam. Šādos gadījumos masīva mainīgā lielums pēc vajadzības jāpalielina. Kad izmantojat a ReDim-paziņojums, lai mainītu masīva mainīgā lielumu, mainīgā saturs tiek dzēsts, lai izvairītos no mainīgā satura dzēšanas, kad Redim masīva mainīgais, kas jums būs jāizmanto ReDim Preserve-paziņojums, apgalvojums.

Kods

Apakšdaļa GetFileNameList ()
'saglabā visus failu nosaukumus pašreizējā mapē
Dim FolderFiles () kā virkne deklarē dinamiskā masīva mainīgo
Dim tmp As String, fCount As Integer
fSkaitlis = 0
tmp = Dir ("D: \ Test \*.*")
Kamēr tmp Tukšs
fCount = fCount + 1
ReDim saglabā mapju failus (no 1 līdz fCount)
'atkal paziņo masīva mainīgo (izmērs+1)
FolderFiles (fCount) = tmp
tmp = Rež
Wend
MsgBox fCount & "failu nosaukumi ir atrodami mapē & CurDir
Erase FolderFiles izdzēš mainīgo saturu, atbrīvo nedaudz atmiņas
Beigt apakš

Atšifrēt

Dim FolderFiles () kā virkne

Mums ir dimensija-izeja vienu pārbaudāmu FolderFiles kā virkni, kas ir masīva tips, atverot un aizverot Paranthesis, pēc pārbaudāmā nosaukuma, bet nevarēsim tajā saglabāt nekādus datus, jo neesam norādījuši tā augšējo līmeni.

tmp = Dir ("D: \ Test \*.*")

Komanda Dir darbojas kā pētnieks, kas var saturēt visu direktorijā esošo failu un mapju nosaukumu. Varat arī ierobežot visus failus ar dažiem īpašiem kritērijiem. Dir ("D: \ Test \*. Pdf") ierobežos no visiem failiem tikai PDF failus vai paplašinājumus.

Kamēr tmp Tukšs

Excel VBA cilpas vietā šoreiz mēs atkārtojam to pašu darbību, izmantojot Excel VBA WHILE LOOP, kur cikla beigu kritērijs tika iestatīts kā tmp, kas nav vienāds ar tukšu. Tātad, līdz brīdim, kad bija kāda vērtība tmp pārbaudāma, cilpa darbosies.

ReDim saglabā mapju failus (no 1 līdz fCount)

Masīva verificējamiem mapju failiem sākuma pozīcijā nav augšējā līmeņa. Bet katrā atkārtojumā tas palielinās savu augšējo līmeni ar ReDim komandu. Pirmajā braucienā 1, tad 2… un tā tālāk, līdz fCount. Tomēr ar katru reizi, palielinot augšējo līmeni, tas zaudēs visus jau piešķirtos mainīgos. Izmantojot komandu Saglabāt, mēs varam turēt vai saglabāt jau piešķirto vērtību.

Wend

Vends VBA mēdza teikt For Loops, lai vēlreiz atkārtotu to pašu uzdevumu, līdz tiks izpildīti kritēriji.

MsgBox fCount & "failu nosaukumi ir atrodami mapē & CurDir

Katrā atkārtojumā fcout palielināsies ar +1, un tā galīgā vērtība palielinās šajā direktorijā / mapē atrasto failu skaitu. CurDir komanda dod pašreizējā direktorija nosaukumu. Šajā gadījumā “D: \ Test”