Variabelen gebruiken in Excel sub-procedures in Visual Basic for Applications

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 843144 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

INLEIDING

In dit artikel wordt beschreven hoe u variabelen gebruiken in Microsoft Sub-procedures in Microsoft Visual Basic voor Excel Toepassingen.

Meer informatie

Variabelen in een Sub-procedure

Is de mogelijkheid om een krachtige functie van programmeertalen iets in een variabele opgeslagen zodat de inhoud van de variabele kunnen worden gebruikt. of later in de procedure kan worden gewijzigd. Dit document komen de volgende gebruik van variabelen in Visual Basic
  • Hoe de variabelen zijn gedeclareerd.
  • De procedures en de projecten die u kunnen de variabele.
  • De levensduur van een variabele.

Declareer een variabele in een macro

Is de eenvoudigste manier om een objectvariabele declareert in een macro met deDiminstructie. De volgende regel verklaart twee variabelen x en y, als Gehele getallen:
Dim x As Integer, y As Integer
X en y is opgegeven als gehele getallen, vertelt u Visual Basic reserveert voldoende geheugen voor de variabele een geheel getal (2 bytes voor x en y) en de informatie die is opgeslagen in x of y is een geheel getal tussen -32768 en 32767.

OpmerkingAls u meer dan ÚÚn variabele declareren met behulp van een enkelDiminstructie, moet u het gegevenstype voor elk variabele.

Als u het gegevenstype voor elke variabele opgeeft als in de volgende Visual Basic-code de variabele y is ingesteld als een geheel getal variabele. De variabele x is een variant type:
Dim x, y As Integer
Zie voor meer informatie de 'gegevenstype Variant' sectie.

Een variabele test uitvoeren als volgt:
  1. Opslaan en sluit alle geopende werkmappen en open een nieuw werkmap.
  2. Start de Visual Basic Editor (druk op ALT + F11).
  3. Op deInvoegenmenu, klik opModule.
  4. Typ de volgende code:
    Sub Variable_Test()
    Dim x As Integer, y As Integer
    x = 10
    y = 100
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
  5. Voer deVariable_Testmacro. Het volgende foutbericht:
    is de waarde van x 10
    de waarde van y is 100
  6. Klik opOK.
  7. In deVariable_Testmacro wijzigen de volgende regel:
    x = 10
    

    :
    x = "error"
    
  8. Voer deVariable_Testmacro.
Ontvangt u een fout omdat 'fout' is een Integer en u probeert de waarde toewijzen aan de variabele integer x.

Overzicht gegevenstypen

De volgende tabel worden veelgebruikte gegevenstypen:

Deze tabel samenvouwenDeze tabel uitklappen
GegevenstypeOpslagruimteToegestane bereik
Boolean2 bytesTrue of False
Geheel getal2 bytes-32.768 tot 32.767
Lange4 bytes-2.147.483.648 aan 2.147.483.647
Dubbel8 bytes-1, 79769313486232E308 tot -94065645841247E-324 voor negatieve waarden; 94065645841247E-324 tot 1, 79769313486232E308 voor positieve waarden
Valuta8 bytes922,337,203,685,477.5808 tot 922.337.203.685.477,5807
Datum8 bytes1 Januari 100 tot en met 31 December 9999
Tekenreeks10 bytes + tekenreeks

Gegevenstype Variant

Als u niet een gegevenstype opgeven wanneer u een variabele declareert of u helemaal niet een variabele declareert, Visual Basic automatisch geeft de VARIANT gegevenstype voor deze variabele. De volgende zijn de voordelen van variabelen die zijn gedeclareerd als dit gegevenstype:
  • Variabelen kunnen bevatten, string, datum, tijd, Boolean, of numerieke waarden.
  • De variabelen kunnen waarden die ze bevatten converteren automatisch.
Het nadeel is variant-variabelen vereisen ten minste 16 bytes van het geheugen. 16 bytes geheugen in grote procedures aanzienlijk zijn of in complexe modules.

Hoe dit werkt deVariable_Testmacro als volgt:
  1. Wijzig de code in deVariable_Testmacro:
    Sub Variable_Test()
    Dim x, y
    x = "string"
    y = 1.23
    MsgBox "the value of x is " & x & _
    Chr(13) & "the value of y is " & y
    End Sub
    
  2. Voer deVariable_Testmacro.
U ontvangt geen foutbericht omdat u niets kunt toewijzen variant-variabelen x en y.

OpmerkingU kunt ook de volgende regel laat en wordt de macro nog steeds werken als de variabelen x en y worden behandeld als een Variant-gegevenstypen:
Dim x, y

Bereik van een variabele

Wanneer u een variabele declareert, kan of kunnen niet worden bekeken door andere macro's in dezelfde module, andere modules of andere projecten. Dit beschikbaarheid van een variabele in modules is scope genoemd. De drie typen bereik op procedureniveau, persoonlijk moduleniveau, zijn en openbare op moduleniveau. Het bereik is afhankelijk van hoe en waar u de variabele declareert of variabelen.

Bereik op procedureniveau

Een variabele op procedureniveau scope is niet zichtbaar buiten de de procedure waarin deze is gedeclareerd. Als u de waarde van een variabele is ingesteld bereik op procedureniveau, dat de inhoud van de variabele niet worden gezien door andere macro's.

Een variabele met een bereik op procedureniveau is niet controleren gezien buiten de procedure waarin deze is gedeclareerd als volgt:
  1. Voeg een nieuwe module in uw project.
  2. Typ beide van de volgende macro's in deze module:
    Sub Macro1()
    Dim x As Integer
    x = 10
    MsgBox "x, as seen by Macro1 is " & x
    'the next line runs Macro2
    Macro2
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. UitvoerenMacro1.

    Het volgende foutbericht:
    x, zoals gezien door Macro1 is 10
  4. Klik opOK.

    U ontvangt de volgende bericht:
    x, zoals gezien door Macro2 is
  5. Klik opOK.
Macro2een waarde voor de variabele x niet weergegeven omdat de variabele x is lokaalMacro1.

Particuliere en openbare moduleniveau scope

In de declaratiesectie van een module kunt u variabelen definiŰren (boven in een module boven alle sub procedures), en de omvang van uw variabele met behulp van dePubliekinstructie, deDiminstructie, of deParticulierinstructie. Als u plaatsen dePubliekinstructie voor de variabele de variabele worden beschikbaar voor de macro in alle modules in het project. Als u hetzij deDiminstructie of deParticulierinstructie voor de variabele de variabele is beschikbaar alleen voor macro's in de module waarin deze wordt gedeclareerd.

Overzicht van de verschil tussen dePubliekinstructie en deDiminstructie als volgt:
  1. Opslaan en sluit alle geopende werkmappen opent een nieuw werkmap.
  2. Start de Visual Basic Editor.
  3. Een module invoegen in uw project.
  4. Typ de volgende code in deze module:
    Public x As Integer
    Sub Macro_1a()
    x = 10
    MsgBox x
    Macro_1b
    End Sub
    Sub Macro_1b()
    x = x * 2
    MsgBox x
    Macro2
    End Sub
    
  5. Een andere module invoegen in uw project.
  6. Typ de volgende code in deze module:
    Sub Macro2()
    x = x * 3
    MsgBox x
    End Sub
    
  7. Voer deMacro_1amacro in de eerste module.

    Met de variabele x gedeclareerd "Openbare x als integer", alle drie macro's in het project toegang hebben tot de de waarde van x. Het eerste berichtvenster de waarde 10. Het tweede bericht vak geeft een waarde van 20 (omdat x wordt vermenigvuldigd met 2 inMacro_1b). De derde berichtvenster de waarde 60 (omdat de waarde x is gewijzigd in 20Macro_1ben is vervolgens vermenigvuldigd met 3 inMacro2).
  8. Wijzig de aangifteregel in de eerste module uit:
    Public x As Integer

    :
    Dim x As Integer
  9. Voer deMacro_1amacro.

    Met de variabele x gedeclareerd als 'Dim x als "Integer", alleen de macro's in de eerste module hebben toegang tot de waarde van x. Dus het eerste berichtvenster de waarde 10, het tweede berichtvenster een waarde van 20 (omdat x wordt vermenigvuldigd met 2 inMacro_1b) en het derde vak de waarde 0 wordt weergegeven omdat (Macro2de waarde van x en de niet-ge´nitialiseerde nul niet te zien gebruikt doorMacro 2).
  10. Wijzig de aangifteregel in de eerste module uit:
    Dim x As Integer

    :
    Private x As Integer
  11. Voer deMacro_1amacro.
Dezelfde berichtvensters weergegeven met deParticulierinstructie scope zoals ze waren met deDiminstructie. De variabele x is hetzelfde bereik tot de module waarin deze is gedeclareerd.

OpmerkingAls u het bereik van de variabele beperkt tot de module waarin deze is gedeclareerd, gebruik deParticulierin plaats van deDiminstructie. Beide hetzelfde effect bereiken, maar het bereik is duidelijker wanneer u de code gelezen als u deParticulierinstructie.

Levensduur van een variabele

De tijd gedurende welke een variabele de waarde ervan behoudt bekend als de levensduur. De waarde van een variabele kan veranderen tijdens de levensduur, maar wel een waarde behouden. Ook een variabele verliest scope, niet langer heeft een waarde.

De waarde van de variabele initialiseren

Wanneer u een macro uitvoert, de variabelen zijn ge´nitialiseerd naar een waarde. Een numerieke variabele ge´nitialiseerd op nul, een tekenreeks met variabele lengte ge´nitialiseerd een tekenreeks met lengte nul (""), en is gevuld met een tekenreeks met vaste lengte de ASCII-code 0. Lege zijn Variant-variabelen ge´nitialiseerd. Een lege variabele wordt vertegenwoordigd door een nul in een numerieke context en een tekenreeks met lengte nul ("") in een tekenreekscontext.

Procedurevariabelen

Als er een variabele is gedeclareerd in een macro met deDiminstructie, de variabele behoudt de waarde als de macro is uitgevoerd. Als deze macro andere macro's roept, is de waarde van de variabele behouden (niet beschikbaar voor de macro's al), zolang deze andere macro's worden uitgevoerd.

Demonstreren hoe procedurevariabelen werken, als volgt:
  1. Voeg een nieuwe module in uw project.
  2. Typ beide van de volgende macro's in deze module:
    Sub Macro1()
    'set x as a procedure level variable
    Dim x As Integer
       MsgBox "the initialized value of x is " & x
    x = 10
    MsgBox "x is " & x
    'the next line runs Macro2
    Macro2
    MsgBox "x is still " & x
    End Sub
    Sub Macro2()
    MsgBox "x, as seen by Macro2 is " & x
    End Sub
    
  3. UitvoerenMacro1.

    Het volgende foutbericht:
    is ge´nitialiseerd waarde van x 0
  4. Klik opOK.

    U ontvangt de volgende bericht:
    x is 10
  5. Klik opOK.

    U ontvangt de volgende bericht:
    x, zoals gezien door Macro2
  6. Klik opOK.

    Macro2een waarde voor de variabele x niet weergegeven omdat de variabele x is lokaalMacro1. Het volgende foutbericht:
    x nog 10
  7. Klik opOK.
  8. UitvoerenMacro1.
Ontvangen van berichten worden beschreven in stap 3 tot en met 6 omdat zodraMacro1de waarde van de variabele x is gestopt in stap 6 verloren gegaan. Dus wanneer u opnieuw uitvoerenMacro1in stap 7 bevat het eerste bericht de waarde van x als nul (de waarde ge´nitialiseerd).

Statisch trefwoord

Als een variabele op procedureniveau is gedeclareerd met behulp van de statische trefwoord, de variabele behoudt de waarde tot het project opnieuw ingesteld. Daarom Als u een statische variabele de volgende keer dat u de procedure oproepen de de laatste waarde is statische variabele ge´nitialiseerd.

Om te zien hoe de Statisch trefwoord works volgt:
  1. Wijzig de code inMacro1:
    Sub Macro1()
    'set x as a procedure level variable
    Static x As Integer
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. UitvoerenMacro1.

    Het volgende foutbericht:
    is ge´nitialiseerd waarde van x 0
  3. Klik opOK.

    U ontvangt de volgende bericht:
    x is 10
  4. Klik opOK.
  5. UitvoerenMacro1.

    Het volgende foutbericht:
    is ge´nitialiseerd waarde van x 10
  6. Klik opOK.

    U ontvangt de volgende bericht:
    is x 20
  7. Klik opOK.
De waarden die worden weergegeven in de berichten zijn verschillende tweede tijd omdat de variabele x is gedeclareerd als een statische variabele en de variabele behoudt de waarde na het uitvoeren vanMacro1de eerste keer.

OpmerkingAls u een variabele op moduleniveau is de levensduur hetzelfde als Als een statische variabele op procedureniveau.

Controleren of de levensduur een variabele op moduleniveau als volgt:
  1. Wijzig de code in de module bevatMacro1het volgende:
    Dim x As Integer  'create a module-level variable
    Sub Macro1()
       MsgBox "the initialized value of x is " & x
    x = x + 10
    MsgBox "x is " & x
    End Sub
    
  2. UitvoerenMacro1.

    Het volgende foutbericht:
    is ge´nitialiseerd waarde van x 0
  3. Klik opOK.

    U ontvangt de volgende bericht:
    x is 10
  4. Klik opOK.
  5. UitvoerenMacro1.

    Het volgende foutbericht:
    is ge´nitialiseerd waarde van x 10
  6. Klik opOK.

    U ontvangt de volgende bericht:
    is x 20
  7. Klik opOK.
De waarden die worden weergegeven in de berichten zijn verschillende tweede tijd omdat de variabele x is gedeclareerd als een statische variabele en behoudt haar waarde na het uitvoeren vanMacro1de eerste keer.

Project variabelen opnieuw instellen

Als u de waarde voor een statische variabele of een variabele, op moduleniveau deOpnieuw instellenknop op deStandaardwerkbalk, of klik opOpnieuw instellenop deUitvoerenmenu.

Als u deze voor deMacro1Project en vervolgens opnieuw uitvoerenMacro1, terug naar nul en de waarde van de variabele x is ge´nitialiseerd het eerste bericht:
ge´nitialiseerd waarde van x 0
Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
843145Beschrijving van Excel sub-procedures in Visual Basic for Applications (Matrices)
terug naar de Top

Eigenschappen

Artikel ID: 843144 - Laatste beoordeling: dinsdag 20 september 2011 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Trefwoorden:á
kbvba kbprogramming kbinfo kbmt KB843144 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:843144

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com