Ta vadnica bo obravnavala razliko med VBA ActiveWorkbook in ThisWorkbook.
ActiveWorkbook vs ThisWorkbook
Pomembno je vedeti razliko med ActiveWorkbook in ThisWorkbook v VBA:
ActiveWorkbook je delovni zvezek, ki je trenutno aktiven (podobno kot je trenutno aktivni list ActiveSheet). Ta delovni zvezek je delovni zvezek, v katerem je shranjena koda VBA. Ta delovni zvezek se ne bo nikoli spremenil.
Ta delovni zvezek
Pomislite na ThisWorkbook kot na spremenljivko objekta, ki vam omogoča sklicevanje na delovni zvezek, ki vsebuje trenutno delujočo kodo.
Ta koda bo prikazala MessageBox z imenom ThisWorkbook:
123 | Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameEnd Sub |
ActiveWorkbook
ActiveWorkbook je predmetna spremenljivka, ki vam omogoča sklicevanje na trenutno aktivni delovni zvezek.
Ta koda bo prikazala MessageBox z imenom ActiveWorkbook:
123 | Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameEnd Sub |
VBA prevzema ActiveWorkbook
Ko poskušate delati s predmeti (npr. Listi) v knjigi ActiveWorkbook, vam predmeta ActiveWorkbook ni treba izrecno navesti. VBA bo domneval, da se nanašate na ActiveWorkbook.
Torej tole:
1 | ActiveWorkbook.Sheets ("Sheet1"). Range ("$ A $ 5"). Vrednost = 1 |
Je enako kot tole:
1 | Listi ("List1"). Razpon ("$ A $ 5"). Vrednost = 1 |
Novi ali odprti delovni zvezki so aktivni
Kadar koli ustvarite nov delovni zvezek ali odprete delovni zvezek, postane delovni zvezek »aktiven«. Sami se lahko prepričate s to kodo, ki bo dodala delovni zvezek in pridobila ime novega delovnega zvezka:
1234 | Sub Show_ActiveWorkbook_Add ()Delovni zvezki.DodajMsgBox ActiveWorkbook.NameEnd Sub |
Ko dodate ali odprete delovni zvezek, ga lahko s predmetom ActiveWorkbook dodelite spremenljivki. Kako vam bomo pokazali v spodnjih primerih:
Primeri tega delovnega zvezka in aktivnega delovnega zvezka
Preklopite na aktivni delovni zvezek
Preklopite aktivni delovni zvezek z imenom delovnega zvezka:
1 | Delovni zvezki ("Knjiga1"). Aktivirajte |
Preklopite aktivni delovni zvezek s številko naročila delovnega lista (1 je prvi delovni list v delovnem zvezku)
1 | Delovni zvezki (1). Aktivirajte |
Naj bo ta delovni zvezek aktiven
Naj bo ta delovni zvezek (kjer je shranjena trenutno delujoča koda) ActiveWorkbook:
1 | ThisWorkbook.Aktiviraj |
Nastavite ActiveWorkbook na spremenljivko
Dodelite ActiveWorkbook spremenljivki predmeta delovnega zvezka:
12 | Dim wb Kot delovni zvezekNastavite wb = ActiveWorkbook |
Zaprite in shranite aktivni delovni zvezek
Zapre in shrani ActiveWorkbook:
1 | ActiveWorkbook.Close SaveChanges: = True |
Zaprite aktivni delovni zvezek brez shranjevanja
Zapre ActiveWorkbook brez shranjevanja:
1 | ActiveWorkbook.Close SaveChanges: = False |
ActiveWorkbook - Shrani kot
Izvede shranjevanje aktivnega delovnega zvezka.
123456789 | Sub SaveAsActiveWorkbook ()Zatemni rezultat kot variantoresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Excelov delovni zvezek z omogočeno makro funkcijo ( *.xlsm), *.xlsm, Excelov delovni zvezek ( *.xlsx), *.xlsx")Če je rezultat = napačno, se vrniteRezultat ActiveWorkbook.SaveAsEnd Sub |