VBA ThisWorkbook - Hoe ThisWorkbook-eigenschap te gebruiken in Excel VBA?

Inhoudsopgave

Excel VBA ThisWorkbook

VBA ThisWorkbook betekent de werkmap waarin we de Excel-code schrijven. Als u bijvoorbeeld werkt in de werkmap met de naam "Sales 2019.xlsx", verwijzen we meestal op deze manier naar de werkmap.

Werkmappen ('Sales 2019.xlsx'). Activeren

De code activeert de werkmap met de naam "Sales 2019.xlsx".

In plaats van zo te schrijven, kunnen we eenvoudig de VBA-code hieronder schrijven.

ThisWorkbook.Activate '

Hier verwijst ThisWorkbook naar de werkmap waarin we de code schrijven. Door naar dit woord te verwijzen, kunnen we alle taken in de huidige werkmap uitvoeren en lange code met een volledig benoemde werkmapnaam vermijden.

Ik weet zeker dat u ook het woord "Actieve werkmap" moet hebben gezien als u naar de andere code verwijst. Dit is ook een van de vaak gebruikte woorden bij codering. We zullen zien wat de verschillen tussen deze twee woorden in de basis zijn.

Werken met ThisWorkbook in Excel VBA

Het verwijzingswoord "ThisWorkbook" is betrouwbaarder dan de objectkwalificatie Workbooks. Een van de menselijke neigingen is het verkeerd typen van de werkmapnaam, wat resulteert in een foutmelding.

Nog een belangrijke reden waarom VBA ThisWorkbook betrouwbaarder is, want voor het geval dat we de naam van de werkmap wijzigen, moeten we de code wijzigen omdat we het woord 'ThisWorkbook' hebben gebruikt.

ThisWorkbook is dus veiliger om te gebruiken om te verwijzen naar de werkmap waarin we de code schrijven.

Voorbeeld 1

We zullen enkele voorbeelden zien waarin we het woord ThisWorkbook in Excel VBA kunnen gebruiken. De volgende code zal de naam van de werkmap afdrukken.

Code:

Sub TWB_Example1 () Dim WBName As String WBName = ThisWorkbook.Name MsgBox WBName End Sub

Wanneer u de code handmatig uitvoert of de F5-toets gebruikt, geeft de bovenstaande code de werkmapnaam weer in het berichtvenster in VBA.

Voorbeeld 2

In plaats van het woord "Deze werkmap" te gebruiken, kunnen we variabelen gebruiken om de werkmapreferentie in te stellen en zelfs de lengte van de code drastisch verminderen in VBA. Kijk bijvoorbeeld eerst naar de onderstaande code.

Code:

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

De bovenstaande code heeft "ThisWorkbook" gebruikt in elke regel van de code. Hoe moeilijk het is om het woord elke keer te typen. We kunnen dit dus minimaliseren door variabelen te gebruiken.

Bekijk nu de onderstaande code met de variabele.

Code:

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

Ziet er mooi uit, nietwaar ??

Laat me de code aan jullie uitleggen.

Ten eerste heb ik de variabele gedeclareerd als een werkmapobject.

Dim Wb als werkboek

Omdat dit een objectvariabele is, moeten we de verwijzing naar de specifieke werkmap instellen. Dus ik heb de referentie "ThisWorkbook" gebruikt.

Stel Wb = ThisWorkbook in

Now the variable “Wb” is referenced to the workbook where we are writing the code at the moment. From here on going forward in the procedure, we need not use the word “ThisWorkbook” instead, we can use the variable “Wb.”

Active Workbook vs. ThisWorkbook in Excel VBA

As I told at the beginning of the article, many coders use the words Active Workbook & ThisWorkbook very often in their VBA coding. As a reader or a new learner, it is not easy to understand these two. So, let me explain to you some of the differences.

Difference #1: Meaning

  • Active Workbook: Active Workbook is not necessarily the workbook where we are writing the code at the moment. If you have multiple opened workbooks and whichever the workbook is visible on your screen is considered as Active Workbook.
  • ThisWorkbook: ThisWorkbook is altijd de werkmap waarin we de code op dit moment schrijven.

Verschil 2: foutkansen

  • Actieve werkmap: het gebruik van Actief bij de codering kan tot veel fouten en verwarring leiden, omdat we nooit weten welke werkmap actief is, tenzij we specifiek de te activeren werkmap vermelden voordat we het woord Actieve werkmap gebruiken.
  • ThisWorkbook: ThisWorkbook kan niet fout gaan, want het maakt niet uit welke werkmap actief is. Het neemt altijd de referentie van de werkmap waarin we de code schrijven.

Interessante artikelen...