VBA ThisWorkbook - Ako používať vlastnosť ThisWorkbook v programe Excel VBA?

ExcelWBA ThisWorkbook

VBA ThisWorkbook znamená zošit, do ktorého píšeme kód programu Excel. Napríklad ak pracujete v zošite s názvom „Predaj 2019.xlsx“, zvyčajne sa na tento zošit odvolávame takto.

Zošity („Predaj 2019.xlsx“). Aktivujte

Tento kód aktivuje zošit s názvom „Predaj 2019.xlsx“.

Namiesto toho, aby sme takto písali, môžeme jednoducho napísať kód VBA nižšie.

ThisWorkbook.Activate '

Tu ThisWorkbook odkazuje na zošit, do ktorého píšeme kód. Odkazom na toto slovo môžeme vykonať všetky úlohy v aktuálnom zošite a vyhnúť sa zdĺhavému kódu s úplne pomenovaným názvom zošita.

Som si istý, že ste určite videli aj slovo „Aktívny zošit“, keď odkazujete na kód ostatných. Toto je tiež jedno z často používaných slov pri kódovaní. Uvidíme, aké sú rozdiely medzi týmito dvoma základnými slovami.

Práca s týmto pracovným zošitom v programe Excel VBA

Referenčné slovo „ThisWorkbook“ je spoľahlivejšie ako kvalifikátor objektu Workbooks. Jednou z ľudských tendencií je nesprávne zadávanie názvu zošita, čo má za následok chybové hlásenie.

Ďalším dôležitým dôvodom, prečo je VBA ThisWorkbook spoľahlivejší, pretože iba v prípade, že zmeníme názov zošita, musíme zmeniť kód, pretože sme použili slovo „ThisWorkbook“.

ThisWorkbook je teda bezpečnejšie použiť pri odkazovaní na zošit, do ktorého píšeme kód.

Príklad č

Uvidíme niektoré z príkladov, kde môžeme použiť slovo ThisWorkbook v programe Excel VBA. Nasledujúci kód vytlačí názov zošita.

Kód:

Sub TWB_Example1 () Dim WBName ako reťazec WBName = ThisWorkbook.Name MsgBox WBName End Sub

Keď spustíte kód manuálne alebo pomocou klávesu F5, vyššie uvedený kód zobrazí názov zošita v poli so správou vo VBA.

Príklad č

Namiesto použitia slova „Tento zošit“ môžeme pomocou premenných nastaviť odkaz na zošit a dokonca vo VBA drasticky znížiť dĺžku kódu. Napríklad sa najskôr pozrite na nižšie uvedený kód.

Kód:

Sub TWB_Example2 () ThisWorkbook.Activate ThisWorkbook.Worksheets ("Sheet1"). Activate ThisWorkbook.Save ThisWorkbook.Close ThisWorkbook.SaveAs End Sub

Vyššie uvedený kód použil výraz „ThisWorkbook“ v každom riadku kódu. Aké ťažké je napísať slovo vždy. Takže to môžeme minimalizovať použitím premenných.

Teraz sa pozrite na nasledujúci kód s premennou.

Kód:

Sub TWB_Example2 () Dim Wb As Workbook Set Wb = ThisWorkbook Wb.Activate Wb.Worksheets ("Sheet1"). Activate Wb.Save Wb.Close Wb.SaveAs End Sub

Vyzerá krásne, však?

Chcem vám vysvetliť kód.

Najskôr som premennú vyhlásil za objekt zošita.

Dim Wb As Workbook

Pretože sa jedná o objektovú premennú, musíme nastaviť odkaz na konkrétny zošit. Použil som teda referenciu „ThisWorkbook“.

Nastaviť Wb = ThisWorkbook

Teraz sa premenná „Wb“ vzťahuje na zošit, do ktorého momentálne píšeme kód. Od tejto chvíle nebudeme musieť používať slovo „ThisWorkbook“, ale aj premennú „Wb“.

Aktívny zošit vs. ThisWorkbook v programe Excel VBA

Ako som povedal na začiatku článku, veľa programátorov používa vo svojom kódovaní VBA veľmi často slová Active Workbook & ThisWorkbook. Ako čitateľ alebo nový študent nie je ľahké porozumieť týmto dvom. Dovoľte mi teda vysvetliť vám niektoré rozdiely.

Rozdiel # 1: Význam

  • Aktívny zošit: Aktívny zošit nemusí byť nutne zošit, do ktorého momentálne píšeme kód. Ak máte viac otvorených zošitov a ten, ktorý je zošit viditeľný na obrazovke, sa považuje za aktívny zošit .
  • ThisWorkbook: ThisWorkbook je vždy zošit, do ktorého momentálne píšeme kód.

Rozdiel 2: Chybové šance

  • Aktívny zošit: Použitie aktívneho v kódovaní môže viesť k mnohým chybám a zmätkom, pretože nikdy nevieme, ktorý zošit je aktívny, pokiaľ konkrétne nezmeníme zošit, ktorý sa má aktivovať, pred použitím slova Aktívny zošit.
  • ThisWorkbook: ThisWorkbook nemôže pokaziť, pretože nezáleží na tom, ktorý zošit je aktívny. Vždy to vezme odkaz na zošit, kde píšeme kód.

Zaujímavé články...