VBA ActiveWorkbook vs. ThisWorkbook

Tento tutoriál bude diskutovat o rozdílu mezi VBA ActiveWorkbook a ThisWorkbook.

ActiveWorkbook vs. ThisWorkbook

Je důležité znát rozdíl mezi ActiveWorkbook a ThisWorkbook ve VBA:

ActiveWorkbook je sešit, který je aktuálně aktivní (podobně jako ActiveSheet je aktuálně aktivní list). ThisWorkbook je sešit, kde je uložen kód VBA. Tato pracovní kniha se nikdy nezmění.

Tato pracovní kniha

Představte si ThisWorkbook jako objektovou proměnnou, která vám umožní odkazovat na sešit obsahující aktuálně spuštěný kód.

Tento kód zobrazí MessageBox s názvem ThisWorkbook:

123 Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameEnd Sub

Aktivní pracovní kniha

ActiveWorkbook je objektová proměnná, která vám umožňuje odkazovat na aktuálně aktivní sešit.

Tento kód zobrazí MessageBox s názvem ActiveWorkbook:

123 Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameEnd Sub

VBA předpokládá ActiveWorkbook

Při pokusu o práci s objekty (např. Listy) v rámci ActiveWorkbooku není nutné objekt ActiveWorkbook explicitně uvádět. VBA bude předpokládat, že odkazujete na ActiveWorkbook.

Takže tohle:

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

Je stejné jako toto:

1 Listy („List1“). Rozsah („$ A $ 5“). Hodnota = 1

Nové nebo otevřené sešity jsou aktivní

Kdykoli vytvoříte nový sešit nebo otevřete sešit, sešit se stane „Aktivním“. Můžete se sami přesvědčit pomocí tohoto kódu, který přidá sešit a načte název nového sešitu:

1234 Sub Show_ActiveWorkbook_Add ()Sešity. PřidatMsgBox ActiveWorkbook.NameEnd Sub

Po přidání nebo otevření sešitu jej můžete přiřadit k proměnné pomocí objektu ActiveWorkbook. V následujících příkladech vám ukážeme, jak:

ThisWorkbook and ActiveWorkbook examples

Přepnout aktivní sešit

Přepněte aktivní sešit pomocí názvu sešitu:

1 Sešity („Kniha1“). Aktivujte

Přepněte aktivní sešit pomocí pořadového čísla listu (1 je první list v sešitu)

1 Sešity (1). Aktivovat

Make ThisWorkbook Active

Make ThisWorkbook (kde je uložen aktuálně spuštěný kód) ActiveWorkbook:

1 ThisWorkbook.Activate

Nastavte ActiveWorkbook na proměnnou

Přiřaďte ActiveWorkbook k proměnné objektu sešitu:

12 Dim wb jako sešitNastavit wb = ActiveWorkbook

Zavřete a uložte aktivní sešit

Zavře a uloží ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges: = True

Zavřete aktivní sešit bez uložení

Zavře ActiveWorkbook bez uložení:

1 ActiveWorkbook.Close SaveChanges: = False

ActiveWorkbook - Uložit jako

Provede uložení jako z aktivního sešitu.

123456789 Sub SaveAsActiveWorkbook ()Dim výsledek jako variantaresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Sešit s podporou maker v Excelu ( *.xlsm), *.xlsm, sešit Excel ( *.xlsx), *.xlsx")If result = False Then ReturnVýsledek ActiveWorkbook.SaveAsEnd Sub

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave