Deze tutorial bespreekt het verschil tussen de VBA ActiveWorkbook en ThisWorkbook.
ActiveWorkbook versus ThisWorkbook
Het is belangrijk om het verschil te kennen tussen de ActiveWorkbook en ThisWorkbook in VBA:
De ActiveWorkbook is de werkmap die momenteel actief is (vergelijkbaar met hoe ActiveSheet het huidige actieve werkblad is). ThisWorkbook is de werkmap waarin de VBA-code is opgeslagen. Dit Werkboek zal nooit veranderen.
Dit Werkboek
Beschouw ThisWorkbook als een objectvariabele waarmee u kunt verwijzen naar de werkmap die de momenteel actieve code bevat.
Deze code geeft een MessageBox weer met de naam ThisWorkbook:
123 | Sub Show_ThisWorkbook()MsgBox ThisWorkbook.NameEinde sub |
ActiefWerkboek
De ActiveWorkbook is een objectvariabele waarmee u kunt verwijzen naar de momenteel actieve werkmap.
Deze code geeft een MessageBox weer met de naam ActiveWorkbook:
123 | Sub Show_ActiveWorkbook()MsgBox ActiveWorkbook.NameEinde sub |
VBA gaat uit van ActiveWorkbook
Wanneer u probeert te werken met objecten (bijv. Spreadsheets) binnen het ActiveWorkbook, hoeft u het ActiveWorkbook-object niet expliciet te vermelden. VBA gaat ervan uit dat u verwijst naar de ActiveWorkbook.
Dus dit:
1 | ActiveWorkbook.Sheets("Blad1").Bereik("$A$5").Waarde = 1 |
Is hetzelfde als dit:
1 | Bladen ("Blad1"). Bereik ("$ A $ 5"). Waarde = 1 |
Nieuwe of geopende werkmappen zijn actief
Telkens wanneer u een nieuwe werkmap maakt of een werkmap opent, wordt de werkmap "Actief". U kunt het zelf zien met deze code die een werkmap toevoegt en de naam van de nieuwe werkmap ophaalt:
1234 | Sub Show_ActiveWorkbook_Add()Werkmappen.ToevoegenMsgBox ActiveWorkbook.NameEinde sub |
Nadat u een werkmap hebt toegevoegd of geopend, kunt u deze aan een variabele toewijzen met behulp van het ActiveWorkbook-object. In de onderstaande voorbeelden laten we u zien hoe:
Voorbeelden van ThisWorkbook en ActiveWorkbook
Schakel tussen actieve werkmap
Schakel de actieve werkmap met Werkmapnaam:
1 | Werkmappen ("Boek1"). Activeren |
Wissel van actieve werkmap met werkbladvolgnummer (1 is het eerste werkblad in een werkmap)
1 | Werkmappen(1).Activeren |
Maak dit werkboek actief
Maak van ThisWorkbook (waar de huidige code is opgeslagen) het ActiveWorkbook:
1 | Dit Werkboek.Activeren |
ActiveWorkbook instellen op een variabele
Wijs de ActiveWorkbook toe aan een werkmapobjectvariabele:
12 | Dim wb als werkboekStel wb = ActiveWorkbook in |
De actieve werkmap sluiten en opslaan
Sluit en bewaart de ActiveWorkbook:
1 | ActiveWorkbook.Close SaveChanges:=True |
Sluit de actieve werkmap zonder op te slaan
Sluit de ActiveWorkbook zonder op te slaan:
1 | ActiveWorkbook.Close SaveChanges:=False |
ActiveWorkbook - Opslaan als
Voert een Opslaan als van de actieve werkmap uit.
123456789 | Sub OpslaanAlsActiefWerkboek()Dim resultaat Als Variantresultaat = Application.GetSaveAsFilename(InitialFileName:="", _FileFilter:="Excel Macro-enabled werkmap (*.xlsm), *.xlsm,Excel-werkmap (*.xlsx), *.xlsx")Als resultaat = False, keer dan terugActiveWorkbook.SaveAls resultaatEinde sub |