In alle programmeertalen hebben we variabele toegangsspecificaties die definiëren van waaruit toegang tot een gedefinieerde variabele kan worden verkregen. Excel VBA is geen uitzondering. VBA heeft ook scope-specificaties. Deze scope-specificaties kunnen worden gebruikt om de zichtbaarheid/scope van een variabele in Excel VBA in te stellen.
In Excel VBA hebben we drie soorten bereikspecificaties:
- Procedureniveau:
- Privé - Moduleniveau
- Openbaar - Projectniveau
Variabel bereik van VBA-procedureniveau
De variabelen die binnen een subroutine worden gedeclareerd, zijn alleen toegankelijk in die procedure/functie. Ze hebben een scope op procedureniveau. Ze worden meestal gedeclareerd met het Dim-sleutelwoord. Als de module een impliciete optie is, is de variabele mogelijk niet gedeclareerd, maar direct gebruikt.
In het onderstaande voorbeeld hebben we een subroutine-scope-test met variabele x en y. Wanneer we de eerste subroutine uitvoeren, werkt deze perfect en drukt de som van X en Y . af
Optie Expliciete subscopeTest() Dim x, y Als geheel getal ' Variabele op procedureniveau in VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum() x = 5 y = 7 Debug.Print x + y End Sub
Maar wanneer u de som van de subroutine uitvoert, geeft deze een foutmelding dat de variabele niet is gedeclareerd. Waarom? Omdat X en Y privé zijn voor de procedure scopeTest en subroutine sum heeft er geen toegang toe. Daarom loopt de sub tegen een fout aan.
VBA Private Variable - Bereik op moduleniveau
Als je een variabele wilt declareren die in de hele module moet worden benaderd, dan declareer je die variabele als privé bovenaan de module, vóór een subroutine of functie.
De variabelen die voor een subroutine in de module worden gedeclareerd, zijn standaard Private. Zelfs als je ze declareert met Dim keyword. Maar om specifiek te zijn, is het verstandig om het sleutelwoord Private te gebruiken.
De onderstaande twee procedures bevinden zich in dezelfde module, module 1.
Optie Expliciete 'Module niveau variabele in VBA. Beide variabelen x en y zijn privé voor deze module. en 'kan worden benaderd vanuit elke sub of functie binnen deze module. Dim x As Integer Private y As Integer Sub scopeTest() 'Dit is toegankelijk vanuit elke module in het project x = 2 y = 3 Debug.Print x + y End Sub Privé Subsom() ' Dit is niet toegankelijk vanuit andere modules x = 5 y = 7 Debug.Print x + y End Sub
De bovenstaande twee functies werken prima, aangezien de variabelen x en y de privévariabelen voor deze module zijn.
Belangrijk: De laatste waarden die zijn opgeslagen in x en y blijven behouden tot in de hele module. Als we eerst de subscopeTest uitvoeren en de waarden van x en y in subsom niet initialiseren en uitvoeren, dan blijft de initiële waarde van x en y ongewijzigd.
De onderstaande subroutine is gedefinieerd in een aparte module, module 2. Als ik de variabele probeer te benaderen vanuit een andere module, loopt de VBA-procedure (of functie) een fout op.
Maar als ik de subroutine probeer aan te roepen som vanaf module 1 in module 2 werkt dit perfect. Om uw functie en subroutines privé te maken voor de module, gebruikt u het sleutelwoord Privé voor de sub en functie.
Opmerking:- De variabelen die vóór een subroutine of functie in een module zijn gedeclareerd, zijn standaard privé voor de module. U kunt de Privaattrefwoord. Maar de functies en subroutines zijn standaard openbaar en zijn toegankelijk voor elke module in een project. Om functies en subroutines privé te maken voor de module moet je het sleutelwoord Private gebruiken.
Publieke variabelen - bereik op projectniveau
Zoals we in de bovenstaande voorbeelden hebben geleerd, zijn de functie en subroutines standaard openbaar en toegankelijk vanuit elke module, maar variabelen niet. Om een variabele toegankelijk te maken vanuit elke module in Excel VBA,we gebruiken het openbare trefwoord.
Om een openbare variabele in een project te declareren, hebt u deze bovenaan de module gedeclareerd, vóór elke functie of subroutine met het openbare sleutelwoord. De onderstaande code is geschreven in module 1.
Optie Expliciet 'Projectniveauvariabele in VBA. Openbaar x als geheel getal Openbaar y als geheel getal Public Sub scopeTest() 'Dit is toegankelijk vanuit elke module in het project x = 2 y = 3 End Sub Private Sub sum() ' Dit is niet toegankelijk vanuit andere modules x = 5 y = 7 Debug.Print x + y Einde sub
En deze subroutine zit in een andere module, module 2.
Optie Expliciete Sub mul() Roep scopeTest 'Call sum' het zal niet werken omdat het privé is voor de module 1 Debug.Print x * y End Sub
Deze keer loopt het perfect.
Eerst heb ik de subroutine scopeTest aangeroepen. Omdat de scopeTest openbaar is, wordt deze genoemd. Het initialiseert de waarden van x en y. Vervolgens vermenigvuldigen we x en y. Aangezien de scopeTest-subroutine deze had geïnitialiseerd met waarden 2 en 3, is het resultaat dat we krijgen 6.
Dus ja jongens, dit is hoe je de variabele bereikspecificaties in Excel kunt gebruiken om de zichtbaarheid van variabelen, functies en subroutines in Excel VBA-projecten te regelen.
Ik heb geprobeerd de toegangsspecificaties van VBA op de eenvoudigste manier uit te leggen. Ik hoop dat het verhelderend was. Als je twijfels hebt over dit artikel of enige andere VBA-gerelateerde twijfel, vraag het me dan in de comments hieronder. Ik zal blij zijn om hier van u.
ByRef- en ByVal-argumenten |Als een argument als ByRef-argument wordt doorgegeven aan een andere sub of functie, wordt de referentie van de werkelijke variabele verzonden. Alle wijzigingen die zijn aangebracht in de kopie van de variabele, worden weergegeven in het oorspronkelijke argument.
Verwijder bladen zonder bevestigingsvragen met VBA in Microsoft Excel|Omdat u bladen verwijdert met VBA, weet u wat u doet. U wilt Excel vertellen deze waarschuwing niet te tonen en dat verdomde blad te verwijderen.
Nieuwe werkmap toevoegen en opslaan met VBA In Microsoft Excel 2016|In deze code hebben we eerst een verwijzing naar een werkmapobject gemaakt. En toen hebben we het geïnitialiseerd met een nieuw werkmapobject. Het voordeel van deze aanpak is dat u eenvoudig bewerkingen op deze nieuwe werkmap kunt uitvoeren. Zoals opslaan, sluiten, verwijderen, etc
Geef een bericht weer op de Excel VBA-statusbalk De statusbalk in Excel kan worden gebruikt als een codemonitor. Wanneer uw VBA-code lang is en u verschillende taken uitvoert met VBA, schakelt u vaak de schermupdate uit zodat u dat scherm niet ziet flikkeren
Schakel waarschuwingsberichten uit met VBA in Microsoft Excel 2016|Deze code schakelt niet alleen VBA-waarschuwingen uit, maar verhoogt ook de tijdefficiëntie van de code. Laten we eens kijken hoe.
Populaire artikels:
50 Excel-snelkoppelingen om uw productiviteit te verhogen | Word sneller in uw taak. Met deze 50 sneltoetsen werk je nog sneller in Excel.
De VERT.ZOEKEN-functie in Excel | Dit is een van de meest gebruikte en populaire functies van Excel die wordt gebruikt om waarde op te zoeken uit verschillende bereiken en bladen.
AANTAL.ALS in Excel 2016 | Tel waarden met voorwaarden met behulp van deze geweldige functie. U hoeft uw gegevens niet te filteren om een specifieke waarde te tellen. Countif-functie is essentieel om uw dashboard voor te bereiden.
Hoe de SUMIF-functie in Excel te gebruiken? | Dit is een andere essentiële functie van het dashboard. Dit helpt u bij het optellen van waarden voor specifieke voorwaarden.