Tento tutoriál bude diskutovať o rozdieloch medzi VBA ActiveWorkbook a ThisWorkbook.
ActiveWorkbook vs. ThisWorkbook
Je dôležité poznať rozdiel medzi ActiveWorkbook a ThisWorkbook vo VBA:
ActiveWorkbook je zošit, ktorý je aktuálne aktívny (podobný tomu, akým je ActiveSheet aktuálne aktívnym listom). ThisWorkbook je zošit, kde je uložený kód VBA. Táto pracovná kniha sa nikdy nezmení.
Táto pracovná kniha
Považujte ThisWorkbook za objektovú premennú, ktorá vám umožní odkazovať na zošit obsahujúci aktuálne spustený kód.
Tento kód zobrazí MessageBox s názvom ThisWorkbook:
123 | Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameKoniec pod |
ActiveWorkbook
ActiveWorkbook je objektová premenná, ktorá vám umožňuje odkazovať na aktuálne aktívny zošit.
Tento kód zobrazí MessageBox s názvom ActiveWorkbook:
123 | Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameKoniec pod |
VBA predpokladá ActiveWorkbook
Pri pokuse o prácu s objektmi (napr. Hárkami) v programe ActiveWorkbook nemusíte objekt ActiveWorkbook explicitne uvádzať. VBA bude predpokladať, že máte na mysli ActiveWorkbook.
Takže toto:
1 | ActiveWorkbook.Sheets ("Sheet1"). Rozsah ("$ A $ 5"). Hodnota = 1 |
Je to isté ako toto:
1 | Tabuľky („List1“). Rozsah („$ A $ 5“). Hodnota = 1 |
Nové alebo otvorené zošity sú aktívne
Kedykoľvek vytvoríte nový zošit alebo otvoríte zošit, zošit sa stane „aktívnym“. Môžete sa sami presvedčiť pomocou tohto kódu, ktorý pridá zošit a získa názov nového zošita:
1234 | Sub Show_ActiveWorkbook_Add ()Zošity. PridaťMsgBox ActiveWorkbook.NameKoniec pod |
Po pridaní alebo otvorení zošita ho môžete priradiť k premennej pomocou objektu ActiveWorkbook. V nasledujúcich príkladoch vám ukážeme, ako na to:
ThisWorkbook and ActiveWorkbook examples
Prepnúť aktívny zošit
Prepnite aktívny zošit pomocou názvu zošita:
1 | Zošity („Kniha 1“). Aktivujte |
Prepnite aktívny zošit pomocou poradového čísla pracovného hárka (1 je prvý pracovný zošit v zošite)
1 | Zošity (1). Aktivovať |
Aktivujte túto pracovnú knihu
Urobte z tejto pracovnej knihy (kde je uložený aktuálne spustený kód) ActiveWorkbook:
1 | ThisWorkbook.Activate |
Nastavte ActiveWorkbook na premennú
Priraďte ActiveWorkbook k premennej objektu zošita:
12 | Dim wb ako zošitNastaviť wb = ActiveWorkbook |
Zatvorte a uložte aktívny zošit
Zatvorí a uloží ActiveWorkbook:
1 | ActiveWorkbook.Zavrieť SaveChanges: = True |
Zatvorte aktívny zošit bez uloženia
Zatvorí ActiveWorkbook bez uloženia:
1 | ActiveWorkbook.Close SaveChanges: = False |
ActiveWorkbook - Uložiť ako
Vykoná uloženie ako z aktívneho zošita.
123456789 | Sub SaveAsActiveWorkbook ()Stmaviť výsledok ako variantresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Zošit s povolením makra v Exceli ( *.xlsm), *.xlsm, zošit programu Excel ( *.xlsx), *.xlsx")Ak je výsledok = False, potom sa vráťteActiveWorkbook.SaveAs resultKoniec pod |