Een handleiding voor het werken met werkmappen in vba
In Excel is een werkmap een van de belangrijkste Excel-objecten, en het is ook essentieel dat u begrijpt hoe u werkmappen gebruikt en ernaar verwijst bij het schrijven van VBA-codes.
In deze zelfstudie verkennen we alle dingen die u moet weten. Maar het eerste dat u moet begrijpen, zijn de objecten die betrokken zijn bij het werken met werkmappen in VBA.
Dingen om te weten:
- Bindmiddelen object
- Binder-object
Deze twee objecten klinken hetzelfde, maar er is een fundamenteel verschil tussen de twee.
Bindmiddelen object
In VBA vertegenwoordigt het object Werkboeken de verzameling werkmappen die zijn geopend in Microsoft Excel. Stel je voor dat je tien archiefkasten tegelijkertijd open hebt staan. En u wilt verwijzen naar de enige werkmap onder hen. In dit geval moet u het werkmapobject gebruiken om met de naam naar deze werkmap te verwijzen.
Binder-object
In VBA vertegenwoordigt het werkmapobject één werkmap tussen alle werkmappen die momenteel in Microsoft Excel zijn geopend. De beste manier om dit te begrijpen is door na te denken over het declareren van een variabele als een binder die u wilt gebruiken om naar een bepaalde binder in code te verwijzen.
Handige links : Voeg een tabblad Ontwikkelaars toe | Visual Basic-editor | Een macro uitvoeren | Persoonlijke macro’s-werkmap
Raadpleeg een werkmap in VBA
Als u met werkmappen in VBA wilt werken, moet u eerst weten hoe u in een macro naar een werkmap kunt verwijzen. Het leuke is: er zijn meerdere manieren om naar een werkmap te verwijzen. En in de toekomst zullen we ze allemaal verkennen.
1. Op naam
De eenvoudigste manier om naar een werkmap te verwijzen is via de naam. Stel dat u de werkmap Book1.xlsx wilt activeren, in dit geval moet u de volgende code gebruiken:
Verwijzen naar een werkmap met de naam ervan is vrij eenvoudig, u moet de naam opgeven, en dat is alles. Maar er is één ding waar u op moet letten : als een werkmap niet wordt opgeslagen, hoeft u alleen de naam te gebruiken. En als het geregistreerd is, moet u de naam met de extensie gebruiken.
2. Op nummer
Wanneer u een werkmap opent, wijst Excel een indexnummer toe aan die werkmap, en u kunt dat nummer gebruiken om naar een werkmap te verwijzen. De werkmap die u als eerste hebt geopend, heeft indexnummer “1”, de tweede heeft “2” enzovoort.
Deze methode lijkt u misschien minder reëel omdat het moeilijk is om te weten welke werkmap op welk indexnummer staat. Maar er is één situatie waarin deze methode erg handig is om te gebruiken, en dat is een lus door alle geopende werkmappen.
3. Door dit werkboek
Deze werkmap is een eigenschap waarmee u kunt verwijzen naar de werkmap waarin u code schrijft. Stel dat u de code in “Book1” schrijft en ThisWorkbook gebruikt om de werkmap op te slaan. Zelfs als u de naam van de werkmap wijzigt, hoeft u de code niet te wijzigen.
De bovenstaande code telt het aantal bladen in de werkmap waarop deze code is geschreven en geeft een berichtvenster weer met het resultaat.
4. Door ActiveWorkbook
Als u naar een actieve werkmap wilt verwijzen, moet u de eigenschap “ActiveWorkbook” gebruiken. Het beste gebruik van deze eigenschap is als u zeker weet welke werkmap nu is geactiveerd. Of u heeft de werkmap waaraan u wilt werken al geactiveerd.
De bovenstaande code activeert eerst de werkmap “Book1” en gebruikt vervolgens de eigenschap actieve werkmap om de actieve werkmap op te slaan en te sluiten.
Toegang tot alle methoden en eigenschappen
Wanneer u in VBA naar een object verwijst, geeft VBA u toegang tot de eigenschappen en methoden die bij dat object worden geleverd. Op dezelfde manier wordt het werkmapobject geleverd met eigenschappen en methoden. Om toegang te krijgen, moet u eerst de werkmap definiëren en vervolgens een punt invoeren .
Op het moment dat u een punt (.) typt, wordt de lijst met eigenschappen en methoden weergegeven. Nu moet u een vraag hebben over hoe u kunt identificeren welke een eigenschap is en welke een methode.
Hier is de truc. Als je goed kijkt, kun je voor elke naam op de lijst een bewegende groene steen en een grijze hand herkennen. Alle eigendommen hebben dus deze grijze wijzer voor de naam en de methoden hebben een bewegende groene steen.
Als u bijvoorbeeld een methode met een werkmap wilt gebruiken
Stel je voor dat je een werkmap wilt sluiten (wat een methode is), je moet ‘Sluiten’ typen of selecteren in de lijst.
Daarna moet u beginnende haakjes invoeren, zodat IntelliSense weet welke argumenten u moet instellen.
Met de close-methode moet je drie argumenten definiëren en zoals je kunt zien zijn al deze argumenten optioneel en kun je ze negeren als je wilt. Maar sommige methoden hebben geen argumenten (bijvoorbeeld: activeren)
Als u bijvoorbeeld een eigenschap met een werkmap wilt gebruiken
Stel je voor dat je de bladen van de werkmap “boek1” wilt tellen. In dit geval moet u de eigenschap ‘Blad’ gebruiken en vervolgens de aanvullende eigenschap count daarvan.
In de bovenstaande code stel je, zoals ik al zei, book1 in, waarna de eigenschap sheet verwijst naar alle bladen, en vervolgens de eigenschap count om ze te tellen. En wanneer u deze code uitvoert, wordt er een berichtvenster weergegeven met het resultaat.
De instructie ‘WITH’ gebruiken met de werkmap
In VBA is er een “With”-instructie waarmee u met een werkmap kunt werken terwijl u efficiënt een macro schrijft. Laten we het onderstaande voorbeeld bekijken waarin u drie verschillende coderegels hebt met dezelfde werkmap, d.w.z. ActiveWorkbook.
Met de instructie “WITH” kunt u slechts één keer naar de actieve werkmap verwijzen en alle eigenschappen en methoden gebruiken die u in de code heeft.
- Eerst moet u beginnen met de startinstructie “With ActiveWorkbook” en de instructie eindigen met “End With”.
- Daarna moet je de code tussen deze instructie schrijven die je in het bovenstaande voorbeeld hebt.
Zoals je in de bovenstaande code kunt zien, hebben we naar die van ActiveWorkbook verwezen met behulp van de WITH-instructie en dan moeten alle eigenschappen en methoden worden gebruikt.
Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub
Laat me u een eenvoudig en concreet voorbeeld geven, zodat u alles begrijpt. Stel je voor dat je me vraagt om naar kamer 215 te gaan om de fles water te halen, en als ik terugkom, stuur je me weer naar kamer 215 om een pen te halen, en stuur me dan opnieuw om een laptop te halen. Het punt is: alle dingen die je me vertelde te halen, bevinden zich in kamer 215. Het is dus beter als je me naar kamer 215 stuurt en zegt dat ik alle drie de dingen in één keer moet halen.
Lees: Met – Eindig met
Declareer een variabele als een werkmap
Soms moet u een variabele als binder declareren om deze verder in de code te kunnen gebruiken. Nou, het vereist niets speciaals van jou.
- Gebruik de DIM-instructie (declare).
- Schrijf de naam van de variabele.
- Stel het variabeletype in op Werkmap.
Omgaan met fouten
Wanneer u met een of meer werkmapobjecten in VBA werkt, moet u mogelijk ook fouten afhandelen. Laten we een voorbeeld nemen van de fout ‘Runtimefout 9: Index buiten bereik’ . Deze fout kan om verschillende redenen optreden.
- De werkmap waarnaar u probeert te verwijzen, is niet geopend.
- Misschien heb je de naam verkeerd gespeld.
- De werkmap waarnaar u verwijst, is nog niet opgeslagen en u gebruikt de extensie met de naam.
- Als u het indexnummer gebruikt om naar een werkmap te verwijzen en het gebruikte nummer groter is dan het totale aantal geopende werkmappen.