VBA ActiveWorkbook vs. ThisWorkbook

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
wave wave wave wave wave