VBA ThisWorkbook - Hur använder jag denna Workbook-egenskap i Excel VBA?

Innehållsförteckning

Excel VBA ThisWorkbook

VBA ThisWorkbook betyder den arbetsbok där vi skriver excel-koden. Om du till exempel arbetar i arbetsboken med namnet ”Försäljning 2019.xlsx” hänvisar vi vanligtvis till arbetsboken så här.

Arbetsböcker (“Försäljning 2019.xlsx”). Aktivera

Koden aktiverar arbetsboken med namnet “Försäljning 2019.xlsx”.

Istället för att skriva så här kan vi helt enkelt skriva VBA-koden nedan.

DennaWorkbook.Activate '

Här refererar ThisWorkbook till arbetsboken där vi skriver koden. Genom att hänvisa till detta ord kan vi utföra alla uppgifter i den aktuella arbetsboken och undvika lång kod med ett fullständigt namn på arbetsboken.

Jag är säker på att du också måste ha sett ordet "Aktiv arbetsbok" när du hänvisar till den andra koden. Detta är också ett av de ofta använda orden vid kodning. Vi får se vad skillnaderna mellan dessa två ord i grundläggande är.

Arbetar med ThisWorkbook i Excel VBA

Referensordet “ThisWorkbook” är mer tillförlitligt än Work Qualification-objektkvalificatorn. En av de mänskliga tendenser är att skriva arbetsbokens namn felaktigt, vilket resulterar i att ett felmeddelande kastas.

Ytterligare en viktig anledning till att VBA ThisWorkbook är mer tillförlitlig, för om vi ändrar arbetsbokens namn, måste vi ändra koden eftersom vi har använt ordet "ThisWorkbook."

Så, ThisWorkbook är säkrare att använda för att hänvisa till arbetsboken där vi skriver koden.

Exempel 1

Vi kommer att se några av exemplen där vi kan använda ordet ThisWorkbook i excel VBA. Följande kod skriver ut arbetsbokens namn.

Koda:

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

När du kör koden manuellt eller använder F5-tangenten kommer koden ovan att visa arbetsbokens namn i meddelandefältet i VBA.

Exempel 2

Istället för att använda ordet "Denna arbetsbok" kan vi använda variabler för att ställa in arbetsbokens referens och till och med minska kodens längd drastiskt i VBA. Titta till exempel först på koden nedan.

Koda:

Sub TWB_Example2 () ThisWorkbook.Activate ThisWorkbook.Worksheets ("Sheet1"). Aktivera dennaWorkbook.Spara ThisWorkbook.Stäng ThisWorkbook.SaveAs End Sub

Ovanstående kod har använt "ThisWorkbook" i varje rad i koden. Hur svårt det är att skriva ordet varje gång. Så vi kan minimera detta genom att använda variabler.

Titta nu på koden nedan med variabeln.

Koda:

Sub TWB_Example2 () Dim Wb Som arbetsbok Set Wb = ThisWorkbook Wb.Activate Wb.Worksheets ("Sheet1"). Aktivera Wb.Save Wb.Stäng Wb.SaveAs End Sub

Ser vackert ut, är det inte?

Låt mig förklara koden för er.

Först har jag förklarat variabeln som ett arbetsbokobjekt.

Dim Wb som arbetsbok

Eftersom detta är en objektvariabel måste vi ställa in referensen till den specifika arbetsboken. Så jag har använt ”ThisWorkbook” -referensen.

Ställ in Wb = ThisWorkbook

Nu hänvisas till variabeln "Wb" till arbetsboken där vi för närvarande skriver koden. Härifrån och framåt i proceduren behöver vi inte använda ordet "ThisWorkbook" istället, vi kan använda variabeln "Wb."

Aktiv arbetsbok kontra ThisWorkbook i Excel VBA

Som jag sa i början av artikeln använder många kodare orden Active Workbook & ThisWorkbook mycket ofta i sin VBA-kodning. Som läsare eller nyinlärare är det inte lätt att förstå dessa två. Så, låt mig förklara för dig några av skillnaderna.

Skillnad 1: Betydelse

  • Aktiv arbetsbok: Aktiv arbetsbok är inte nödvändigtvis arbetsboken där vi skriver koden just nu. Om du har flera öppnade arbetsböcker och vilken arbetsbok som är synlig på din skärm betraktas som Aktiv arbetsbok .
  • ThisWorkbook: ThisWorkbook är alltid arbetsboken där vi skriver koden just nu.

Skillnad 2: Felchanser

  • Aktiv arbetsbok: Användning av Aktiv i kodningen kan leda till många fel och förvirring eftersom vi aldrig vet vilken arbetsbok som är aktiv om vi inte specifikt nämner arbetsboken som ska aktiveras innan vi använder ordet Aktiv arbetsbok.
  • ThisWorkbook: ThisWorkbook kan inte gå fel eftersom det spelar ingen roll vilken arbetsbok som är aktiv. Det tar alltid referens till arbetsboken där vi skriver koden.

Intressanta artiklar...