Acest tutorial va discuta diferența dintre VBA ActiveWorkbook și ThisWorkbook.
ActiveWorkbook vs. ThisWorkbook
Este important să știm diferența dintre ActiveWorkbook și ThisWorkbook în VBA:
ActiveWorkbook este registrul de lucru care este activ în prezent (similar cu modul în care ActiveSheet este foaia activă în prezent). ThisWorkbook este registrul de lucru în care este stocat codul VBA. Acest manual de lucru nu se va schimba niciodată.
Acest manual de lucru
Gândiți-vă la ThisWorkbook ca la o variabilă obiect care vă permite să faceți referire la registrul de lucru care conține codul care rulează în prezent.
Acest cod va afișa un MessageBox cu numele ThisWorkbook:
123 | Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameSfârșitul Sub |
ActiveWorkbook
ActiveWorkbook este o variabilă obiect care vă permite să faceți referire la registrul de lucru activ în prezent.
Acest cod va afișa un MessageBox cu numele ActiveWorkbook:
123 | Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameSfârșitul Sub |
VBA presupune ActiveWorkbook
Când încercați să lucrați cu obiecte (de ex. Foi de calcul) în ActiveWorkbook, nu trebuie să specificați în mod explicit obiectul ActiveWorkbook. VBA va presupune că vă referiți la ActiveWorkbook.
Deci asta:
1 | ActiveWorkbook.Sheets ("Sheet1"). Interval ("$ A $ 5"). Valoare = 1 |
Este la fel ca acesta:
1 | Foi de calcul („Foaie1”). Interval („$ 5 USD”). Valoare = 1 |
Cărțile de lucru noi sau deschise sunt active
Ori de câte ori creați un registru de lucru nou sau deschideți un registru de lucru, registrul de lucru devine „Activ”. Puteți vedea singur cu acest cod care va adăuga un registru de lucru și va prelua numele noului registru de lucru:
1234 | Sub Show_ActiveWorkbook_Add ()Cărți de lucru.AdăugareMsgBox ActiveWorkbook.NameSfârșitul Sub |
După adăugarea sau deschiderea unui registru de lucru, îl puteți atribui unei variabile utilizând obiectul ActiveWorkbook. Vă vom arăta cum în exemplele de mai jos:
Exemple din acest manual și ActiveWorkbook
Comutați Cartea de lucru activă
Comutați registrul de lucru activ folosind numele registrului de lucru:
1 | Cărți de lucru („Book1”). Activați |
Comutați registrul de lucru activ folosind numărul comenzii foii de lucru (1 este prima foaie de lucru dintr-un registru de lucru)
1 | Cărți de lucru (1). Activați |
Faceți activ acest manual
Faceți din ThisWorkbook (unde este stocat codul care rulează în prezent) ActiveWorkbook:
1 | ThisWorkbook.Activate |
Setați ActiveWorkbook la o variabilă
Atribuiți ActiveWorkbook unei variabile obiect de registru de lucru:
12 | Dim wb Ca registru de lucruSetați wb = ActiveWorkbook |
Închideți și salvați registrul de lucru activ
Închide și salvează ActiveWorkbook:
1 | ActiveWorkbook.Close SaveChanges: = True |
Închideți registrul de lucru activ fără a salva
Închide ActiveWorkbook fără a salva:
1 | ActiveWorkbook.Close SaveChanges: = False |
ActiveWorkbook - Salvare ca
Efectuează o salvare ca a registrului de lucru activ.
123456789 | Sub SaveAsActiveWorkbook ()Diminuează rezultatul ca variantăresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Caiet de lucru Excel Macro-Enabled (* .xlsm), * .xlsm, Caiet de lucru Excel (* .xlsx), * .xlsx")Dacă rezultat = Fals Apoi RevenițiRezultat ActiveWorkbook.SaveAsSfârșitul Sub |