VBA thisWorkbook utilizare

cum se deosebește crearea unui nou modul de introducerea de lucruri în thisWorkbook?

ThisWorkbook este documentul gazdă. Acesta reprezintă obiectul Workbook care conține proiectul VBA. Ca orice obiect Workbook, răspunde la evenimentele Workbook.

ThisWorkbook, împreună cu fiecare modul „SheetX”, este un tip special de modul de clasă pe care VBA îl înțelege ca „module document” – aceste module speciale nu pot fi adăugate sau eliminate. Aplicația gazdă (aici Excel) este responsabilă pentru acestea: Pentru a adăuga un modul foaie de lucru, trebuie să adăugați o foaie de lucru la registrul de lucru. Codul VBA nu poate New up un modul document; trebuie să folosiți metodele factory furnizate de bibliotecă pentru a le crea (adică .Workbooks.Open, .Workbooks.Add, .Worksheets.Add).

Fiind obiecte, nu puteți invoca membrii lor publici fără a avea o instanță a acestora. ThisWorkbook definește un obiect care se numește convenabil ThisWorkbook, astfel încât puteți invoca membrii săi prin calificarea apelului de membru cu ThisWorkbook:

ThisWorkbook.SomePublicProcedure "arg1", arg2, 42

La fel și în cazul modulelor de foi de calcul, cu excepția faptului că acestea definesc un obiect care se numește după proprietatea (Name) a modulului – în mod implicit, proprietatea (Name) a foii „Sheet1” este Sheet1, astfel încât o puteți califica astfel:

Sheet1.SomePublicProcedure "arg1", arg2, 42

ThisWorkbook expune procedurile publice ale utilizatorului, plus fiecare membru moștenit de la Workbook; Sheet1 expune procedurile publice ale utilizatorului, plus fiecare membru moștenit de la Worksheet.

ce ar trebui să pun în acestWorkbook?

Ceea ce aparține nivelului workbook. Adică, cod care afectează documentul gazdă. Acesta ar fi în mare parte proceduri de gestionare a evenimentelor, de exemplu, un gestionar pentru evenimentul Open, este invocat atunci când cartea de lucru este deschisă (cu macrourile activate) în Excel.

Vreți să aveți cât mai puțin cod posibil în code-behind-ul oricărui document, astfel încât gestionarii de evenimente să invoce pur și simplu proceduri ca răspuns la evenimente:

Private Sub Workbook_Open() DoSomethingEnd Sub

În care DoSomething ar fi un Public Sub într-un modul standard.

există vreo modalitate de a accesa funcțiile din thisWorkbook (sau un anumit modul de foaie din Excel UI?

Nu doriți să faceți asta. Dar puteți, dacă doriți, să atribuiți o macro la un Public Sub definit în ThisWorkbook:

Rețineți că macroul este calificat cu numele obiectului ThisWorkbook.

În mod normal, ați dori ca macrourile să fie definite în modulele standard. Modulele standard nu sunt obiecte și nu pot fi instanțiate. O procedură publică dintr-un modul standard este accesibilă de oriunde din proiect și, dacă nu scrie Option Private Module în partea de sus, membrii săi publici vor fi ușor de accesat de Excel.

Dacă vreți să spuneți „disponibil pentru Excel” ca „pe care îl pot folosi într-o formulă”, atunci vreți să spuneți „expus ca UDF”, iar acestea, ca și macrourile, aparțin unui modul standard, nu ThisWorkbook.

Lasă un răspuns

Adresa ta de email nu va fi publicată.