VBA openbare variabelen - Hoe openbare variabelen in VBA te declareren (voorbeelden)

Openbare variabelen in VBA

"Openbare variabelen" in VBA, zoals de naam suggereert, zijn variabelen waarvan wordt verklaard dat ze openbaar worden gebruikt voor alle macro's die we schrijven in dezelfde module en ook in verschillende modules. Dus wanneer de variabelen aan het begin van een macro worden gedeclareerd, worden ze 'Openbare variabelen' of 'Globale variabelen' genoemd.

Hoe openbare variabelen in VBA declareren?

Meestal starten we de VBA-subprocedure en binnen de subprocedure declareren we onze variabelen. Dit is de gangbare praktijk die we allemaal hebben gedaan tot dit artikel.

Elke keer dat we een nieuwe subprocedure schrijven, declareren we nieuwe variabelen met gegevenstypen die eraan zijn toegewezen. Maar vandaag zullen we afscheid nemen van repetitieve variabelen tussen subprocedures.

Laten we ons de oude stijl herinneren. Hieronder staat de code die ik heb geschreven met een enkele variabele.

In de subprocedure “Public_Variable” heb ik deze variabele gedeclareerd. Nu kan ik geen van de andere modules gebruiken.

Nu kunnen we in de subprocedure "Public_Variable1" de variabele "Var1" niet gebruiken, die werd gedeclareerd in de eerste subprocedure "Public_Variable". Dit is de beperking van het declareren van variabelen binnen de subprocedures.

# 1 - Variabelen op moduleniveau

Zoals we allemaal weten, schrijven we macro's in modules. We kunnen een aantal modules invoegen. We kunnen twee soorten "openbare variabelen" in VBA declareren, een is om de variabelen te gebruiken voor alle subprocedures in dezelfde module, en de tweede is om de variabelen te gebruiken voor alle subprocedures in alle modules.

Ten eerste zullen we openbare variabelen in VBA op moduleniveau declareren.

Om de variabelen voor alle subprocedures in dezelfde module te gebruiken, moeten we de variabelen bovenaan de module declareren voordat we macro's starten.

Hieronder ziet u het voorbeeldscherm voor uw begrip.

Zoals we in de bovenstaande afbeelding kunnen zien, heb ik twee variabelen verklaard voordat ik een macro in de module start. Nu kunnen deze twee variabelen in een willekeurig aantal macro's in deze module worden gebruikt.

In de subprocedure begint u met het typen van de variabelenaam waarvan u kunt zien dat de IntelliSense-lijst de namen van variabelen zal weergeven.

Nu kunnen we deze variabelen gebruiken in alle macro's die we in “Module1” schrijven.

Deze variabelen kunnen alleen in deze module worden gebruikt. Nu zal ik bijvoorbeeld nog een module invoegen en een nieuwe macro schrijven.

In Module2 kan ik de variabelen die we hebben gedeclareerd in "Module1" niet gebruiken.

Dus, hoe kunnen we deze variabelen openbaar maken in VBA voor gebruik in alle modules en alle subprocedures?

# 2 - Declareer variabelen, gebruik ze openbaar

Ga terug naar “Module1” in deze module. We hebben variabelen gedeclareerd voordat we beginnen met het schrijven van de weg van de macro en ook welke wereld we hebben gebruikt om die variabelen te declareren.

Op onze traditionele manier om het woord "DIM" te gebruiken, hebben we deze variabelen verklaard.

Als we alleen het woord "DIM" gebruiken, is het beperkt tot alle macro's maar in dezelfde module.

In plaats van het woord "DIM", moeten we het woord "PUBLIC" of "GLOBAL" gebruiken om ze beschikbaar te maken voor gebruik in alle macromodules.

Ik heb het woord "Globaal" gebruikt om de variabele declaratie openbaar te maken. U kunt ook het woord "Openbaar" gebruiken.

Dus door de woorden "Globaal" en "Openbaar" te gebruiken, kunnen we variabelen declareren die kunnen worden gebruikt voor alle macro's in modules.

Dingen om te onthouden

  • Het is een goede gewoonte om variabelen openbaar te declareren, maar er is veel ervaring voor nodig voordat u ze declareert.
  • Zodra de macro's zijn begonnen over te lopen, is de waarde van de macro voor de variabele hetzelfde.
  • Wijs de specifieke waarde alleen toe aan de variabele in de specifieke macro om elke vorm van verwarring te voorkomen.

Interessante artikelen...