Denna handledning visar hur du skapar och använder matriser av objekt i VBA.
I VBA är matriser variabler som lagrar flera värden. Du kan lagra VBA -objekt i matriser på samma sätt som du skulle lagra annan data.
Förklarar objektmatrisen
I det här exemplet kommer vi att deklarera en rad VBA -kalkylblad:
1 | Dim arWks (3) Som arbetsblad |
Befolkning av en statisk objektmatris
Förklara att objektmatrisen är statisk och sedan kan du fylla i matrisen med de ark du väljer från din arbetsbok.
12345678 | Sub TestObjArray ()'definiera matrisen som ett kalkylbladDim arWks (1 till 3) som arbetsblad'lägg till 3 ark i matrisenset arWks (1) = Ark (1)set arWks (2) = Sheets (2)Ställ in arWks (3) = Sheets (3)Avsluta Sub |
Befolkning av en dynamisk objektmatris
Du kan förklara att objektmatrisen är dynamisk och sedan räkna arken i arbetsboken innan du tilldelar matrisstorleken till objektmatrisen.
1234567891011121314 | Sub TestObjArray ()'definiera matrisen som ett kalkylbladDim arWks () som arbetsblad'räkna hur många kalkylblad i filen och dimma om arrayenDim n Som heltalDim i As Integer'räkna arken och minus ett för att ställa in gränserna för matrisenn = Application.Sheets.Count - 1ReDim arWks (n)'fyll i kalkylbladet med alla blad i arbetsbokenFör i = LBound (arWks) till UBound (arWks)Ange arWks (i) = ActiveWorkbook.Sheets (i + 1)Nästa iAvsluta Sub |
I exemplet ovan deklarerar vi först arbetsbladsmatrisen. Vi räknar sedan antalet ark i arbetsboken och tilldelar det värdet minus ett till matrisens UBound. Detta beror på att LBound för matrisen börjar som 0. Slutligen går vi igenom arken och lägger till varje ark i matrisen.
Använda objektmatrisen i VBA -kod
När vi har fyllt i kalkylbladsmatrisen kan vi använda VBA för att gå igenom matrisen.
123456789101112131415161718 | Sub TestObjArray ()'definiera matrisen som ett kalkylbladDim arWks () som arbetsblad'räkna hur många kalkylblad i filen och dimma om arrayenDim n Som heltalDim i As Integer'räkna arken och minus ett för att ställa in gränserna för matrisenn = Application.Sheets.Count - 1ReDim arWks (n)'fyll i kalkylbladet med alla blad i arbetsbokenFör i = LBound (arWks) till UBound (arWks)Ange arWks (i) = ActiveWorkbook.Sheets (i + 1)Nästa i'gör något för varje ark i gruppenFör i = LBound (arWks) till UBound (arWks)arWks (i) .Range ("A1: H1"). Font.Bold = TrueNästa iAvsluta Sub |
I exemplet ovan går vi igenom matrisen och fet den första raden i varje ark i matrisen.