In deze zelfstudie wordt uitgelegd wat een VBA-compilerfout betekent en hoe deze optreedt.
Voordat u uw code uitvoert, compileert de VBA-editor de code. Dit betekent in feite dat VBA uw code onderzoekt om er zeker van te zijn dat alle vereisten aanwezig zijn om het correct uit te voeren - het zal controleren of alle variabelen zijn gedeclareerd (als u Option Explicit gebruikt, wat u zou moeten doen!), Controleer of alle procedures zijn gedeclareerd , controleer de loops en if-statements enz. Door de code te compileren, helpt VBA om eventuele runtime-fouten te minimaliseren.
(Zie onze Error Handling Guide voor meer informatie over VBA-fouten)
Niet-gedeclareerde variabelen
Als u geen variabelen declareert, maar uw Option Explicit is ingeschakeld bovenaan uw module, en u voert de macro uit, zal er een compileerfout optreden.
Als u op OK klikt, gaat de betreffende procedure in de foutopsporingsmodus.
Als alternatief kunt u, voordat u uw code uitvoert, een compilatie van de code forceren.
In de Menu, selecteer Foutopsporing > Project compileren.
De compiler zal eventuele compileerfouten vinden en de eerste die het vindt dienovereenkomstig markeren.
Niet-aangegeven procedures
Als je code verwijst naar een procedure die niet bestaat, krijg je ook een compileerfout.
Bijvoorbeeld:
1234 | Sub-oproepprocedure()'hier dan een code'Bel de volgende procedureEinde sub |
Als de procedure echter - VolgendeProcedure niet bestaat, zal er een compileerfout optreden.
Onjuiste codering - verwacht einde van verklaring
Als u een lus maakt met Voor… Elke… Volgende of Met… Eindig met en vergeet te en de Volgende of de Eindigt met… je krijgt ook een compileerfout.
123456 | Subcompileerfout()Dim wb als werkboekDim ws als werkbladVoor elke ws In wbMsgBox ws.NaamEinde sub |
Hetzelfde zal gebeuren met een If-statement als de End If wordt weggelaten!
Ontbrekende referenties
Als u een objectbibliotheek gebruikt die geen deel uitmaakt van Excel, maar u gebruikt de objecten uit de bibliotheek in uw variabeledeclaratie, dan krijgt u ook een compileerfout.
Dit kan worden opgelost door ofwel Late Binding - de variabelen te declareren als Objects; of door de relevante . toe te voegen Objectbibliotheek naar het Project.
In de Menu, selecteer Hulpmiddelen > Referenties en voeg de relevante objectbibliotheek toe aan uw project.