Denne opplæringen vil diskutere forskjellen mellom VBA ActiveWorkbook og ThisWorkbook.
ActiveWorkbook vs. ThisWorkbook
Det er viktig å vite forskjellen mellom ActiveWorkbook og ThisWorkbook i VBA:
ActiveWorkbook er arbeidsboken som er aktiv for øyeblikket (ligner på hvordan ActiveSheet er det aktive arket for øyeblikket). ThisWorkbook er arbeidsboken der VBA -koden er lagret. Denne arbeidsboken vil aldri endres.
Denne arbeidsboken
Tenk på ThisWorkbook som en objektvariabel som lar deg referere til arbeidsboken som inneholder koden som kjører.
Denne koden viser en MessageBox med ThisWorkbook -navn:
123 | Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameSlutt Sub |
ActiveWorkbook
ActiveWorkbook er en objektvariabel som lar deg referere til den aktive arbeidsboken.
Denne koden viser en MessageBox med ActiveWorkbook -navn:
123 | Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameSlutt Sub |
VBA antar ActiveWorkbook
Når du prøver å arbeide med objekter (f.eks. Ark) i ActiveWorkbook, trenger du ikke eksplisitt å angi ActiveWorkbook -objektet. VBA antar at du refererer til ActiveWorkbook.
Så dette:
1 | ActiveWorkbook.Sheets ("Sheet1"). Område ("$ A $ 5"). Verdi = 1 |
Er det samme som dette:
1 | Ark ("Ark1"). Område ("$ A $ 5"). Verdi = 1 |
Nye eller åpnede arbeidsbøker er aktive
Hver gang du oppretter en ny arbeidsbok eller åpner en arbeidsbok, blir arbeidsboken "Aktiv". Du kan se selv med denne koden som vil legge til en arbeidsbok og hente den nye arbeidsbokens navn:
1234 | Sub Show_ActiveWorkbook_Add ()Arbeidsbøker.Legg tilMsgBox ActiveWorkbook.NameSlutt Sub |
Etter at du har lagt til eller åpnet en arbeidsbok, kan du tilordne den til en variabel ved hjelp av ActiveWorkbook -objektet. Vi viser deg hvordan i eksemplene nedenfor:
ThisWorkbook og ActiveWorkbook eksempler
Bytt aktiv arbeidsbok
Bytt den aktive arbeidsboken ved hjelp av arbeidsboknavn:
1 | Arbeidsbøker ("Bok1"). Aktiver |
Bytt den aktive arbeidsboken ved å bruke bestillingsnummeret til regnearket (1 er det første regnearket i en arbeidsbok)
1 | Arbeidsbøker (1). Aktiver |
Gjør ThisWorkbook Active
Gjør ThisWorkbook (der den gjeldende koden er lagret) til ActiveWorkbook:
1 | ThisWorkbook.Activate |
Sett ActiveWorkbook til en variabel
Tilordne ActiveWorkbook til en arbeidsbokobjektvariabel:
12 | Dim wb Som arbeidsbokSett wb = ActiveWorkbook |
Lukk og lagre den aktive arbeidsboken
Lukker og lagrer ActiveWorkbook:
1 | ActiveWorkbook.Close SaveChanges: = True |
Lukk den aktive arbeidsboken uten å lagre
Lukker ActiveWorkbook uten å lagre:
1 | ActiveWorkbook.Close SaveChanges: = False |
ActiveWorkbook - Lagre som
Utfører en lagre som i den aktive arbeidsboken.
123456789 | Sub SaveAsActiveWorkbook ()Dim resultat Som variantresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Excel makroaktivert arbeidsbok ( *.xlsm), *.xlsm, Excel arbeidsbok ( *.xlsx), *.xlsx")Hvis resultat = Falsk, returner duActiveWorkbook.SaveAs resultatSlutt Sub |