VBA ActiveWorkbook vs. ThisWorkbook

Denne vejledning vil diskutere forskellen mellem VBA ActiveWorkbook og ThisWorkbook.

ActiveWorkbook vs. ThisWorkbook

Det er vigtigt at kende forskellen mellem ActiveWorkbook og ThisWorkbook i VBA:

ActiveWorkbook er den projektmappe, der i øjeblikket er aktiv (ligner hvordan ActiveSheet er det aktuelt aktive ark). ThisWorkbook er den projektmappe, hvor VBA -koden er gemt. Denne arbejdsbog vil aldrig ændre sig.

Denne arbejdsbog

Tænk på ThisWorkbook som en objektvariabel, der giver dig mulighed for at referere til projektmappen, der indeholder den aktuelt kørende kode.

Denne kode viser en MessageBox med ThisWorkbook -navn:

123 Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameAfslut Sub

ActiveWorkbook

ActiveWorkbook er en objektvariabel, der giver dig mulighed for at referere til den aktuelt aktive projektmappe.

Denne kode viser en MessageBox med ActiveWorkbook -navn:

123 Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameAfslut Sub

VBA antager ActiveWorkbook

Når du forsøger at arbejde med objekter (f.eks. Ark) i ActiveWorkbook, behøver du ikke eksplicit at angive ActiveWorkbook -objektet. VBA antager, at du refererer til ActiveWorkbook.

Så dette:

1 ActiveWorkbook.Sheets ("Sheet1"). Område ("$ A $ 5"). Værdi = 1

Er det samme som dette:

1 Ark ("Ark1"). Område ("$ A $ 5"). Værdi = 1

Nye eller åbnede projektmapper er aktive

Når du opretter en ny projektmappe eller åbner en projektmappe, bliver projektmappen "Aktiv". Du kan selv se med denne kode, der tilføjer en projektmappe og henter den nye projektmappes navn:

1234 Sub Show_ActiveWorkbook_Add ()Workbooks.AddMsgBox ActiveWorkbook.NameAfslut Sub

Når du har tilføjet eller åbnet en projektmappe, kan du tildele den til en variabel ved hjælp af ActiveWorkbook -objektet. Vi viser dig hvordan i eksemplerne herunder:

ThisWorkbook og ActiveWorkbook Eksempler

Skift aktiv projektmappe

Skift den aktive projektmappe ved hjælp af projektmappens navn:

1 Arbejdsbøger ("Bog1"). Aktiver

Skift den aktive projektmappe ved hjælp af regnearks ordrenummer (1 er det første regneark i en projektmappe)

1 Arbejdsbøger (1) .Aktiver

Gør ThisWorkbook aktiv

Gør ThisWorkbook (hvor den aktuelt kørende kode er gemt) til ActiveWorkbook:

1 ThisWorkbook.Activate

Indstil ActiveWorkbook til en variabel

Tildel ActiveWorkbook til en projektmappeobjektvariabel:

12 Dim wb Som projektmappeIndstil wb = ActiveWorkbook

Luk og gem den aktive projektmappe

Lukker og gemmer ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges: = True

Luk den aktive projektmappe uden at gemme

Lukker ActiveWorkbook uden at gemme:

1 ActiveWorkbook.Close SaveChanges: = Falsk

ActiveWorkbook - Gem som

Udfører en gem som i den aktive projektmappe.

123456789 Sub SaveAsActiveWorkbook ()Dim resultat Som variantresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Excel makroaktiveret projektmappe ( *.xlsm), *.xlsm, Excel-projektmappe ( *.xlsx), *.xlsx")Hvis resultat = Falsk ReturActiveWorkbook.SaveAs resultatAfslut Sub

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave