VBA ThisWorkbook

Excel VBA ThisWorkbook

VBA ThisWorkbook betyder den arbetsbok där vi skriver excel-koden. Till exempel, om du arbetar i arbetsboken som heter "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 ”Sales 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 detta ord kan vi utföra alla uppgifter i den aktuella arbetsboken och undvika långvarig 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 kommer att se vad skillnaderna mellan dessa två ord i grundläggande är.

Arbetar med ThisWorkbook i Excel VBA

Referensordet "ThisWorkbook" är mer tillförlitligt än Workbooks-objektkvalificatorn. En av de mänskliga tendenserna ä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.

Du kan ladda ner denna VBA ThisWorkbook Excel-mall här - VBA ThisWorkbook Excel-mall

Exempel nr 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å nedanstående kod.

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 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" utan vi kan använda variabeln "Wb"

Aktiv arbetsbok vs 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: Att använda 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.