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 |