Verwendung von Variablen in Excel Sub-Prozeduren in Visual Basic for Applications

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 843144 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

EINFÜHRUNG

Dieser Artikel beschreibt die Verwendung von Variablen in Microsoft Excel Sub-Prozeduren in Microsoft Visual Basic for Applications.

Weitere Informationen

Variablen in einer Subprozedur

Ein leistungsfähiges Feature von Programmiersprachen ist die Möglichkeit, etwas in einer Variablen speichern, so dass der Inhalt der Variablen verwendet werden können oder später in der Prozedur geändert werden können. Dieses Dokument beschreibt die folgende Verwendung von Variablen in Visual Basic:
  • Wie Variablen deklariert werden.
  • Die Verfahren und die Projekte, mit denen var.
  • Die Lebensdauer einer Variablen.

Deklarieren Sie eine Variable in einem Makro

Die einfachste Möglichkeit zum Deklarieren einer Variablen in einem Makro soll die Dim -Anweisung verwenden. Die folgende Zeile deklariert zwei Variablen, X und y, als ganze Zahlen:
Dim x As Integer, y As Integer
X und y mit Ganzzahlen angegeben, sagen Sie Visual Basic Flächenstilllegung genügend Speicher für eine ganzzahlige Variable (2 Byte für x und y) und die Informationen, die in x- oder y gespeichert ist eine ganze Zahl zwischen-32768 und 32767.

Hinweis Wenn Sie mehrere Variablen deklarieren, indem Sie ein einzelnes Dim -Anweisung müssen Sie den Datentyp für jede Variable angeben.

Wenn Sie den Datentyp für jede Variable wie im folgenden Visual Basic-Code nicht angeben wird nur die Variable y als eine ganzzahlige Variable eingerichtet. Die Variable X wird ein variant-Typ sein:
Dim x, y As Integer
Weitere Informationen finden Sie im Abschnitt "Variant-Datentyp".

Um eine Variable Test durchzuführen, gehen Sie folgendermaßen vor:
  1. Speichern Sie und schließen Sie alle geöffneten Arbeitsmappen und öffnen Sie eine Newworkbook.
  2. Starten Sie den Visual Basic-Editor (drücken Sie ALT + F11).
  3. Klicken Sie im Menü Einfügen aufModul.
  4. Geben Sie den folgenden Code ein:
    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. Führen Sie das Makro Variable_Test . Sie erhalten die folgende Meldung angezeigt:
    der Wert von x ist 10
    der Wert von y ist 100
  6. Klicken Sie auf OK.
  7. Ändern Sie die folgende Zeile in das Variable_Test -Makro:
    x = 10
    

    Zu:
    x = "error"
    
  8. Führen Sie das Makro Variable_Test .
Sie erhalten einen Laufzeitfehler, da "Fehler" keine Zahl ist, und Sie versuchen, die ganzzahlige Variable X diesen Zeichenfolgenwert zuweisen.

Datentyp: Zusammenfassung

Die folgende Tabelle listet häufige Datentypen für Variablen:

Tabelle minimierenTabelle vergrößern
DatentypSpeichergrößeZulässiger Bereich
Boolescher Wert 2 bytes True oder False
Ganze Zahl 2 bytes -32.768 bis 32.767
Lange 4 bytes -2.147.483.648 bis 2.147.483.647
Double 8 bytes -1,79769313486232e308 bis - 4,94065645841247E-324-für negative Werte; 4,94065645841247E-324-324 bis 1,79769313486232E308 für positive Werte
Währung 8 bytes -922.337.203.685.477,5808 und 922.337.203.685.477,5807 zu
Datum 8 bytes 1. Januar 100 bis zum 31. Dezember 9999
Zeichenfolge 10 Bytes + die Länge der Zeichenfolge

Variant-Datentyp

Wenn Sie kein Datentyps angeben deklarieren Sie eine Variable oder eine Variable wird nicht auf allen deklarieren, gibt Visual Basic automatisch den variant-Datentyp für diese Variable. Es folgen die Vorteile der Variablen, die mit diesem Datentyp deklariert werden:
  • Die Variablen enthalten können, Zeichenfolge, Datum, Uhrzeit, Boolesch, Ornumeric-Werte.
  • Die Variablen können die Werte zu konvertieren, dass sie Containautomatically.
Der Nachteil ist, dass Variante-Variablen mindestens 16 Bytes Arbeitsspeicher erfordern. 16 Bytes an Speicher können beträchtlich in großen Prozeduren oder komplexen Modulen sein.

Um zu sehen, wie das Makro Variable_Test funktioniert, gehen Sie folgendermaßen vor:
  1. Ändern Sie den Code in das Makro Variable_Test :
    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. Führen Sie das Makro Variable_Test .
Sie erhalten keine Fehlermeldung, da Sie alle Varianten-Variablen zuweisen können x und y.

Hinweis Sie können auch die folgenden Zeile lassen und Makros funktionieren immer noch wie die Variablen X und y werden als Variant-Datentypen behandelt:
Dim x, y

Der Gültigkeitsbereich einer Variablen

Wenn Sie eine Variable deklarieren, kann oder kann nicht durch andere Makros in einem Modul, in anderen Modulen oder in anderen Projekten angezeigt. Diese Verfügbarkeit einer Variablen in Modulen wird als Bereich bezeichnet. Stehen die drei Typen der Gültigkeitsbereich auf Prozedurebene, private Modulebene und öffentliche Modulebene. Der Gültigkeitsbereich hängt davon ab, wie und wo Sie die Variablen oder Variablen deklarieren.

Gültigkeitsbereich auf Prozedurebene

Eine Variable mit Gültigkeitsbereich auf Prozedurebene ist nicht außerhalb der Prozedur angezeigt, in dem es deklariert ist. Wenn Sie den Wert einer Variablen, die auf Prozedurebene gültig ist festlegen, werden diese Variable Inhalt nicht durch andere Makros angezeigt werden.

Um sicherzustellen, dass eine Variable mit Gültigkeitsbereich auf Prozedurebene außerhalb der Prozedur nicht angezeigt wird, in dem es deklariert ist, gehen Sie folgendermaßen vor:
  1. Legen Sie ein neues Modul in das Projekt ein.
  2. Geben Sie beide der folgenden Makros in dieses Modul:
    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. Führen Sie Macro1.

    Sie erhalten die folgende Meldung angezeigt:
    gesehen von Makro1 X ist 10
  4. Klicken Sie auf OK.

    Sie erhalten folgende Meldung:
    X, gesehen von Macro2is
  5. Klicken Sie auf OK.
Makro2 zeigt einen Wert für die Variable X nicht, da die Variable X auf Makro1lokal ist.

Private und öffentliche Modulebene Bereich

Sie können Variablen im Deklarationsbereich eines Moduls (oben in einem Modul vor allem Sub-Prozeduren) definieren und den Gültigkeitsbereich der Variablen mit der Public -Anweisung, die Dim -Anweisung oder die Private -Anweisung festgelegt. Wenn Sie die Public -Anweisung vor die Variable setzen, wird die Variable für alle Makros in allen Modulen des Projekts verfügbar. Wenn Sie die Dim -Anweisung oder die Private -Anweisung vor der Variable setzen, steht die Variable nur Makros in das Modul, in dem es deklariert wird.

Um den Unterschied zwischen der Public -Anweisung und die Dim -Anweisung zu sehen, gehen Sie folgendermaßen vor:
  1. Speichern Sie und schließen Sie alle geöffneten Arbeitsmappen, und öffnen Sie dann eine Newworkbook.
  2. Starten Sie den Visual Basic-Editor.
  3. Fügen Sie ein Modul in das Projekt ein.
  4. Geben Sie in diesem Modul den folgenden Code:
    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. Legen Sie ein anderes Modul in das Projekt.
  6. Geben Sie in diesem Modul den folgenden Code:
    Sub Macro2()
    x = x * 3
    MsgBox x
    End Sub
    
  7. Führen Sie das Makro Macro_1a im ersten Modul.

    Mit der Variablen X-Declaredas "Öffentliche X As Integer" haben alle drei Makros in diesem Projekt Zugriff auf den Wert von X. Das erste Meldungsfeld zeigt den Wert 10. Die zweite Messagebox zeigt den Wert 20 (da 2 in Macro_1bX multipliziert). Das dritte Meldungsfeld zeigt den Wert 60 (weil der Wert X 20 in Macro_1b geändert wurde, und dann war es multipliziert mit 3 Makro2).
  8. Ändern Sie im ersten Modul aus der Deklarationszeile:
    Public x As Integer

    Zu:
    Dim x As Integer
  9. Führen Sie das Makro Macro_1a .

    Mit die Variable X deklariert, wie "Dim X AsInteger", nur die Makros im ersten Modul zunächst Zugriff auf den Wert der x-Sothe haben im Meldungsfeld zeigt den Wert 10, das zweite Meldungsfeld zeigt einen 20 (da 2 in Macro_1bX multipliziert) und das dritte Meldungsfeld zeigt den Wert 0 (da Makro2 nicht der Wert von x und der nicht initialisierte Wert vom Makro 2verwendeten Zerois angezeigt).
  10. Ändern Sie im ersten Modul aus der Deklarationszeile:
    Dim x As Integer

    Zu:
    Private x As Integer
  11. Führen Sie das Makro Macro_1a .
Die gleichen Meldungsfelder werden angezeigt, mit den privaten Bereich-Anweisung, wie sie die Dim -Anweisung verwenden. Die Variable X hat denselben Gültigkeitsbereich, Private in das Modul, in dem es deklariert ist.

Hinweis Verwenden Sie den Gültigkeitsbereich der Variablen auf das Modul beschränkt werden, in dem es deklariert ist, die Private -Anweisung anstelle der Dim -Anweisung. Beide den gleichen Effekt erzielen, haben jedoch einen besseren beim Lesen des Codes bei der Verwendung der Private -Anweisung.

Lebensdauer einer Variablen

Die Zeit, während, die eine Variable ihren Wert behält, wird Lebensdauer genannt. Der Wert einer Variablen kann während ihrer Lebensdauer ändern, aber es wird einen Wert beibehalten. Wenn eine Variable seinen Gültigkeitsbereich verliert, hat es auch nicht mehr Wert.

Den Wert einer Variablen initialisieren

Wenn Sie ein Makro ausführen, werden alle Variablen auf einen anderen Wert initialisiert. Eine numerische Variable wird mit 0 (null) initialisiert, eine Zeichenfolge variabler Länge mit einer Zeichenfolge der Länge 0 (null) initialisiert wird (""), und eine Zeichenfolge mit fester Länge wird mit den ASCII-Code 0 gefüllt. Variante-Variablen werden mit leeren initialisiert. Eine leere Variable wird dargestellt durch eine 0 in einem numerischen Kontext und einer NULL-Zeichenfolge ("") in einer Zeichenfolge.

Variablen auf Prozedurebene

Wenn Sie eine Variable, die in einem Makro mit der Dim -Anweisung deklariert wird haben, behält die Variable ihren Wert wie das Makro ausgeführt wird. Wenn dieses Makro andere Makros aufruft, wird der Wert der Variablen beibehalten (für die anderen Makros nicht verfügbar sind, wenn) als auch diese anderen Makros ausgeführt werden.

Veranschaulicht, wie Variablen auf Prozedurebene arbeiten, gehen Sie folgendermaßen vor:
  1. Legen Sie ein neues Modul in das Projekt ein.
  2. Geben Sie beide der folgenden Makros in dieses Modul:
    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. Führen Sie Macro1.

    Sie erhalten die folgende Meldung angezeigt:
    der initialisierte Wert von x ist 0
  4. Klicken Sie auf OK.

    Sie erhalten folgende Meldung:
    X ist 10
  5. Klicken Sie auf OK.

    Sie erhalten folgende Meldung:
    ist X, gesehen von Makro2
  6. Klicken Sie auf OK.

    Makro2 zeigt einen Wert für die Variable X nicht, da die Bereichsgrenzen für Makro1lokal ist. Sie erhalten die folgende Meldung angezeigt:
    X Isstill 10
  7. Klicken Sie auf OK.
  8. Führen Sie Macro1.
Sie erhalten die gleichen Meldungen, die in den Schritten 3 bis 6 beschrieben werden, da der Wert der Variablen X als Makro1 in Schritt 6 beendet, unterbrochen wurde. Wenn Sie Macro1 in Schritt 7 erneut ausführen, zeigt die erste Nachricht daher den Wert von x als 0 (null) (der initialisierten Wert).

Static-Schlüsselwort

Wenn eine Variable auf Prozedurebene mit dem Schlüsselwort Static deklariert wird, behält die Variable ihren Wert das Projekt zurückgesetzt wird. Wenn Sie das nächste Mal eine statische Variable, das die Prozedur aufgerufen wird haben, wird daher die statische Variable mit ihren letzten Wert initialisiert.

Um zu sehen, wie das Static-Schlüsselwort funktioniert, gehen Sie folgendermaßen vor:
  1. Ändern Sie den Code in Makro1 an:
    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. Führen Sie Macro1.

    Sie erhalten die folgende Meldung angezeigt:
    der initialisierte Wert von x ist 0
  3. Klicken Sie auf OK.

    Sie erhalten folgende Meldung:
    X ist 10
  4. Klicken Sie auf OK.
  5. Führen Sie Macro1.

    Sie erhalten die folgende Meldung angezeigt:
    der initialisierte Wert von x ist 10
  6. Klicken Sie auf OK.

    Sie erhalten folgende Meldung:
    X ist 20
  7. Klicken Sie auf OK.
Die Werte, die in den Meldungen erscheinen unterscheiden sich zum zweiten Mal da die Variable X als statische Variable deklariert wird und die Variable ihren Wert behält nach dem Makro1 das erste Mal ausführen.

Hinweis Wenn Sie eine Variable auf Modulebene haben, geht ihre Lebensdauer als handele es sich um eine statische Variable auf Prozedurebene.

Gehen Sie folgendermaßen vor, um die Lebensdauer einer Variablen auf Modulebene zu überprüfen:
  1. Ändern Sie den Code in das Modul, das die folgende Makro1 enthält:
    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. Führen Sie Macro1.

    Sie erhalten die folgende Meldung angezeigt:
    der initialisierte Wert von x ist 0
  3. Klicken Sie auf OK.

    Sie erhalten folgende Meldung:
    X ist 10
  4. Klicken Sie auf OK.
  5. Führen Sie Macro1.

    Sie erhalten die folgende Meldung angezeigt:
    der initialisierte Wert von x ist 10
  6. Klicken Sie auf OK.

    Sie erhalten folgende Meldung:
    X ist 20
  7. Klicken Sie auf OK.
Die Werte, die in den Meldungen erscheinen unterscheiden sich zum zweiten Mal da die Variable X als statische Variable deklariert wird und behält ihren Wert, nachdem Sie Macro1 das erste Mal ausgeführt.

Zurücksetzen Sie ein Projekt zum Zurücksetzen der Variablen

Wenn Sie den Wert für eine statische Variable oder eine Variable auf Modulebene zurücksetzen möchten, klicken Sie auf die Schaltfläche Zurücksetzen auf der Symbolleiste Standard , oder klicken Sie im Menü Ausführen auf Zurücksetzen .

Wenn Sie für das Projekt Makro1 dazu und dann Makro1erneut ausführen, wird der Wert der Variablen x zurück auf NULL initialisiert, und die erste Meldung:
der initialisierte Wert von x ist 0
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
843145 Beschreibung des Excel Sub-Prozeduren in Visual Basic for Applications (Arrays)
Zurück zum Anfang

Eigenschaften

Artikel-ID: 843144 - Geändert am: Montag, 3. März 2014 - Version: 7.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Keywords: 
kbvba kbprogramming kbinfo kbmt KB843144 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 843144
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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