VBA ActiveWorkbook vs. ThisWorkbook

Denna handledning kommer att diskutera skillnaden mellan VBA ActiveWorkbook och ThisWorkbook.

ActiveWorkbook vs. ThisWorkbook

Det är viktigt att veta skillnaden mellan ActiveWorkbook och ThisWorkbook i VBA:

ActiveWorkbook är den arbetsbok som för närvarande är aktiv (ungefär som ActiveSheet är det aktuella arket). ThisWorkbook är arbetsboken där VBA -koden lagras. Denna arbetsbok kommer aldrig att förändras.

Denna arbetsbok

Tänk på ThisWorkbook som en objektvariabel som låter dig referera till arbetsboken som innehåller den kod som för närvarande körs.

Denna kod kommer att visa en MessageBox med ThisWorkbook -namn:

123 Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameAvsluta Sub

ActiveWorkbook

ActiveWorkbook är en objektvariabel som låter dig referera till den aktiva arbetsboken.

Denna kod kommer att visa en MessageBox med ActiveWorkbook -namn:

123 Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameAvsluta Sub

VBA antar ActiveWorkbook

När du försöker arbeta med objekt (t.ex. ark) i ActiveWorkbook behöver du inte uttryckligen ange ActiveWorkbook -objektet. VBA antar att du hänvisar till ActiveWorkbook.

Så det här:

1 ActiveWorkbook.Sheets ("Sheet1"). Intervall ("$ A $ 5"). Value = 1

Är det samma som detta:

1 Ark ("Ark1"). Område ("$ A $ 5"). Värde = 1

Nya eller öppnade arbetsböcker är aktiva

När du skapar en ny arbetsbok eller öppnar en arbetsbok blir arbetsboken ”Aktiv”. Du kan se själv med den här koden som lägger till en arbetsbok och hämtar den nya arbetsbokens namn:

1234 Sub Show_ActiveWorkbook_Add ()Arbetsböcker.Lägg tillMsgBox ActiveWorkbook.NameAvsluta Sub

När du har lagt till eller öppnat en arbetsbok kan du tilldela den till en variabel med hjälp av ActiveWorkbook -objektet. Vi visar dig hur i exemplen nedan:

ThisWorkbook och ActiveWorkbook Exempel

Byt aktiv arbetsbok

Byt den aktiva arbetsboken med hjälp av arbetsbokens namn:

1 Arbetsböcker ("Bok1"). Aktivera

Byt den aktiva arbetsboken med hjälp av arbetsbladets ordernummer (1 är det första kalkylbladet i en arbetsbok)

1 Arbetsböcker (1) .Aktivera

Gör ThisWorkbook Active

Gör ThisWorkbook (där den nuvarande koden är lagrad) till ActiveWorkbook:

1 ThisWorkbook.Activate

Ställ in ActiveWorkbook på en variabel

Tilldela ActiveWorkbook till en arbetsbokobjektvariabel:

12 Dim wb Som arbetsbokAnge wb = ActiveWorkbook

Stäng och spara den aktiva arbetsboken

Stänger och sparar ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges: = True

Stäng den aktiva arbetsboken utan att spara

Stänger ActiveWorkbook utan att spara:

1 ActiveWorkbook.Close SaveChanges: = False

ActiveWorkbook - Spara som

Utför en Spara som i den aktiva arbetsboken.

123456789 Sub SaveAsActiveWorkbook ()Dim resultat Som variantresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Macro-aktiverad arbetsbok i Excel ( *.xlsm), *.xlsm, Excel-arbetsbok ( *.xlsx), *.xlsx")Om resultat = falskt, returnera sedanActiveWorkbook.SaveAs resultatAvsluta Sub

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave