VBA ThisWorkbook | Jak používat vlastnost ThisWorkbook v aplikaci Excel VBA?

Excel VBA ThisWorkbook

VBA ThisWorkbook znamená sešit, do kterého píšeme kód aplikace Excel. Například pokud pracujete v sešitu s názvem „Prodej 2019.xlsx“, obvykle na sešit odkazujeme takto.

Sešity („Prodej 2019.xlsx“). Aktivujte

Tento kód aktivuje sešit s názvem „Prodej 2019.xlsx“.

Místo takového psaní můžeme jednoduše napsat kód VBA níže.

ThisWorkbook.Activate '

Zde ThisWorkbook odkazuje na sešit, do kterého píšeme kód. Odkázáním na toto slovo můžeme provést všechny úkoly v aktuálním sešitu a vyhnout se zdlouhavému kódu s plně pojmenovaným názvem sešitu.

Jsem si jistý, že jste také viděli slovo „Aktivní sešit“, když odkazujete na kód ostatních. Toto je také jedno z často používaných slov v kódování. Uvidíme, jaké jsou rozdíly mezi těmito dvěma základními slovy.

Práce s ThisWorkbook v Excelu VBA

Referenční slovo „ThisWorkbook“ je spolehlivější než kvalifikátor objektu Workbooks. Jednou z lidských tendencí je nesprávné zadávání názvu sešitu, což má za následek zobrazení chybové zprávy.

Ještě jeden důležitý důvod, proč je VBA ThisWorkbook spolehlivější, protože v případě, že změníme název sešitu, musíme změnit kód, protože jsme použili slovo „ThisWorkbook“.

ThisWorkbook je tedy bezpečnější použít pro odkazování na sešit, kde píšeme kód.

Tuto šablonu VBA ThisWorkbook Excel si můžete stáhnout zde - Šablona VBA ThisWorkbook Excel

Příklad č. 1

Uvidíme některé z příkladů, kde můžeme použít slovo ThisWorkbook v aplikaci Excel VBA. Následující kód vytiskne název sešitu.

Kód:

 Sub TWB_Example1 () Dim WBName jako řetězec WBName = ThisWorkbook.Name MsgBox WBName End Sub 

Když spustíte kód ručně nebo pomocí klávesy F5, výše uvedený kód zobrazí název sešitu v okně se zprávou ve VBA.

Příklad č. 2

Místo použití slova „This Workbook“ můžeme pomocí proměnných nastavit odkaz na sešit a dokonce ve VBA drasticky snížit délku kódu. Nejprve se například podívejte na níže uvedený kód.

Kód:

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

Výše uvedený kód použil „ThisWorkbook“ v každém řádku kódu. Jak těžké je psát slovo pokaždé. Můžeme to tedy minimalizovat pomocí proměnných.

Nyní se podívejte na níže uvedený kód s proměnnou.

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 

Vypadá krásně, že?

Dovolte mi, abych vám vysvětlil kód.

Nejprve jsem deklaroval proměnnou jako objekt sešitu.

Dim Wb As Workbook

Jelikož se jedná o objektovou proměnnou, musíme nastavit odkaz na konkrétní sešit. Použil jsem tedy odkaz „ThisWorkbook“.

Nastavit Wb = ThisWorkbook

Nyní se proměnná „Wb“ odkazuje na sešit, ve kterém právě píšeme kód. Od této chvíle nebudeme muset používat slovo „ThisWorkbook“, ale můžeme použít proměnnou „Wb“

Aktivní sešit vs ThisWorkbook v aplikaci Excel VBA

Jak jsem řekl na začátku článku, mnoho kodérů používá ve svém kódování VBA velmi často slova Active Workbook & ThisWorkbook. Jako čtenář nebo nový student není snadné těmto dvěma porozumět. Dovolte mi tedy vysvětlit některé rozdíly.

Rozdíl # 1: Význam

  • Aktivní sešit: Aktivní sešit nemusí být nutně sešit, ve kterém právě píšeme kód. Pokud máte více otevřených sešitů a podle toho, co je sešit viditelný na obrazovce, považuje se to za aktivní sešit .
  • ThisWorkbook: ThisWorkbook is always the workbook where we are writing the code at the moment.

Rozdíl 2: Chybové šance

  • Aktivní sešit: Použití Active v kódování může vést k mnoha chybám a zmatkům, protože nikdy nevíme, který sešit je aktivní, pokud výslovně nezmíníme sešit, který se má aktivovat před použitím slova Aktivní sešit.
  • ThisWorkbook: ThisWorkbook cannot go wrong because it doesn't matter which workbook is active to always takes the reference of the workbook where we we writing the code.