Denne opplæringen vil demonstrere hvordan du oppretter og bruker matriser av objekter i VBA.
I VBA er matriser variabler som lagrer flere verdier. Du kan lagre VBA -objekter i matriser på samme måte som du vil lagre andre data.
Deklarere objektsamlingen
I dette eksemplet vil vi deklarere en rekke VBA -regneark:
1 | Dim arWks (3) Som regneark |
Befolkning av et statisk objektarray
Erklær objektgruppen som statisk, og deretter kan du fylle ut matrisen med arkene du velger fra arbeidsboken.
12345678 | Sub TestObjArray ()'definere matrisen som et regnearkarrayDim arWks (1 til 3) Som regneark'legg til 3 ark i matrisensett arWks (1) = Ark (1)sett arWks (2) = Ark (2)Sett arWks (3) = Ark (3)Slutt Sub |
Befolkning av et dynamisk objektarray
Du kan erklære Object Array for å være dynamisk, og deretter telle arkene i arbeidsboken før du tildeler array -størrelsen til Object Array.
1234567891011121314 | Sub TestObjArray ()'definere matrisen som et regnearkarrayDim arWks () Som regneark'teller hvor mange regneark i filen, og dimmer matrisen på nyttDim n Som heltallDim i As Integer'teller arkene og minus ett for å angi grensene for matrisenn = Application.Sheets.Count - 1ReDim arWks (n)'fyll ut regnearket med alle arkene i arbeidsbokenFor i = LBound (arWks) til UBound (arWks)Sett arWks (i) = ActiveWorkbook.Sheets (i + 1)Neste jegSlutt Sub |
I eksemplet ovenfor erklærer vi først regnearket. Vi teller deretter antall ark i arbeidsboken, og tildeler den verdien minus en til UBound of the Array. Dette skyldes det faktum at LBound for matrisen starter som 0. Til slutt går vi gjennom arkene og legger hvert ark til matrisen.
Bruke Object Array i VBA -kode
Når vi har fylt ut regnearket, kan vi bruke VBA til å gå gjennom matrisen.
123456789101112131415161718 | Sub TestObjArray ()'definere matrisen som et regnearkarrayDim arWks () Som regneark'teller hvor mange regneark i filen, og dimmer matrisen på nyttDim n Som heltallDim i As Integer'teller arkene og minus ett for å angi grensene for matrisenn = Application.Sheets.Count - 1ReDim arWks (n)'fyll ut regnearket med alle arkene i arbeidsbokenFor i = LBound (arWks) til UBound (arWks)Sett arWks (i) = ActiveWorkbook.Sheets (i + 1)Neste jeg'Gjør noe med hvert ark i serienFor i = LBound (arWks) til UBound (arWks)arWks (i) .Range ("A1: H1"). Font.Bold = TrueNeste jegSlutt Sub |
I eksemplet ovenfor går vi gjennom matrisen og fet den første raden i hvert ark i matrisen.