VBA ActiveWorkbook vs. ThisWorkbook

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
wave wave wave wave wave