Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

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

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
INLEIDING
In dit artikel wordt beschreven hoe u variabelen gebruiken in Microsoft Sub-procedures in Microsoft Visual Basic voor Excel Toepassingen.

terug naar de Top
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.
naar boven

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 Integerx = 10y = 100MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd 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.

naar boven

Overzicht gegevenstypen

De volgende tabel worden veelgebruikte gegevenstypen:

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

terug naar de Top

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, yx = "string"y = 1.23MsgBox "the value of x is " & x & _Chr(13) & "the value of y is " & yEnd 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

naar boven

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.

terug naar de Top

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 Integerx = 10MsgBox "x, as seen by Macro1 is " & x'the next line runs Macro2Macro2End SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd 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.

terug naar de Top

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 IntegerSub Macro_1a()x = 10MsgBox xMacro_1bEnd SubSub Macro_1b()x = x * 2MsgBox xMacro2End Sub
  5. Een andere module invoegen in uw project.
  6. Typ de volgende code in deze module:
    Sub Macro2()x = x * 3MsgBox xEnd 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.

terug naar de Top

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.

naar boven

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.

terug naar boven

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 variableDim x As Integer   MsgBox "the initialized value of x is " & xx = 10MsgBox "x is " & x'the next line runs Macro2Macro2MsgBox "x is still " & xEnd SubSub Macro2()MsgBox "x, as seen by Macro2 is " & xEnd 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).

terug naar de Top

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 variableStatic x As Integer   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd 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 variableSub Macro1()   MsgBox "the initialized value of x is " & xx = x + 10MsgBox "x is " & xEnd 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.

back-up naar boven

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)
Sub procedures VBA variabelen var xl2007 xl2003 Excel 2000 Excel 2002 xl

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 843144 - Laatst bijgewerkt: 09/20/2011 08:43:00 - Revisie: 3.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition

  • kbvba kbprogramming kbinfo kbmt KB843144 KbMtnl
Feedback