Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Ihr Browser wird nicht unterstützt.

Sie müssen Ihren Browser aktualisieren, um die Website zu verwenden.

Aktualisieren Sie auf die neueste Version von Internet Explorer.

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

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
Einführung
Dieser Artikel beschreibt die Verwendung von Variablen in Microsoft Excel Schritte in Microsoft Visual Basic for Applications.

zurück zum Anfang
Weitere Informationen

Variablen in einer Subprozedur

Ein leistungsfähiges Feature von Programmiersprachen kann etwas in einer Variablen speichern, damit der Inhalt der Variablen verwendet werden können oder später in der Prozedur geändert werden. Dieses Dokument beschreibt die folgende Verwendung von Variablen in Visual Basic:
  • Wie Variablen deklariert werden.
  • Die Verfahren und die Projekte, die var verwenden können.
  • Die Lebensdauer einer Variablen.
zurück zum Anfang

Deklarieren Sie eine Variable in einem Makro

Die einfachste Möglichkeit zum Deklarieren einer Variablen in einem Makro wird die Dim -Anweisung verwenden. Die folgende Zeile deklariert zwei Variablen, X und y als ganze Zahlen:
Dim x As Integer, y As Integer
Mit der Vorgabe x und y sind Ganzzahlen, Sie sagen Visual Basic, dass es genügend Speicher für eine ganzzahlige Variable (jeweils 2 Byte für x und y) reservieren müssen und die Information in x- oder y gespeichert ist eine ganze Zahl zwischen-32768 und 32767.

Hinweis Wenn Sie mehrere Variable mit einer 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 festgelegt. Die Variable X werden Typ variant:
Dim x, y As Integer
Weitere Informationen finden Sie im Abschnitt "Datentyp Variant".

Gehen Sie folgendermaßen vor, um eine Variable Test durchzuführen:
  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:
    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. Führen Sie das Makro Variable_Test aus. Sie erhalten die folgende Meldung angezeigt:
    der Wert von X 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

    So:
    x = "error"
  8. Führen Sie das Makro Variable_Test aus.
Sie erhalten einen Laufzeitfehler, da "Fehler" keine Ganzzahl ist und versuchen, die ganzzahlige Variable X dieser Zeichenfolge zuweisen.

zurück zum Anfang

Datentyp: Zusammenfassung

Die folgende Tabelle enthält allgemeine Datentypen für Variablen:

DatentypSpeichergrößeZulässiger Bereich
Boolescher Wert 2 bytes True oder False
Ganze Zahl 2 bytes -32.768 und 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 bis 1,79769313486232E308 für positive Werte
Währung 8 bytes -922.337.203.685.477,5808 922.337.203.685.477,5807
Datum 8 bytes 1. Januar 100 und dem 31. Dezember 9999
Zeichenfolge 10 Bytes + Zeichenfolgenlänge

zurück zum Anfang

Variant-Datentyp

Wenn Sie keinen Datentyp angeben deklarieren Sie eine Variable oder eine Variable wird nicht zu deklarieren, gibt Visual Basic automatisch den variant-Datentyp für diese Variable. Die Vorteile dieser Datentyp deklarierte Variablen sind:
  • Variablen können enthalten, Zeichenfolge, Datum, Uhrzeit, Boolesch, Ornumeric-Werte.
  • Die Variablen können die Werte konvertieren, Containautomatically.
Der Nachteil ist, dass Variante-Variablen mindestens 16 Bytes Arbeitsspeicher verbrauchen. 16 Bytes Arbeitsspeicher verbrauchen können große Prozeduren oder komplexen Modulen beträchtlich sein.

Gehen folgendermaßen Sie vor um dieses Makro Variable_Test Funktionsweise
  1. Ändern Sie den Code in das Variable_Test -Makro:
    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. Führen Sie das Makro Variable_Test aus.
Einen Fehler wird nicht angezeigt werden, da Sie alle Varianten-Variablen zuweisen können x und y.

Hinweis Auch lassen Sie Sie die folgende Zeile, und das Makro funktioniert wie die Variablen X und y werden als Variant-Datentypen behandelt:
Dim x, y

zurück zum Anfang

Gültigkeitsbereich der Variablen

Wenn Sie eine Variable deklarieren, kann oder möglicherweise andere Makros im selben Modul in anderen Modulen oder in anderen Projekten nicht angezeigt. Die Verfügbarkeit einer Variablen in Modulen als Bereich bezeichnet. Die drei Bereichstypen werden auf, privater Modulebene und öffentliche Modulebene. Der Gültigkeitsbereich hängt davon ab, wie und wo Sie die Variablen oder Variablen deklarieren.

zurück zum Anfang

Gültigkeitsbereich auf Prozedurebene

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

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.
  2. Geben Sie beide der folgenden Makros in dieses Modul:
    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. Führen Sie Macro1 aus.

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

    Sie erhalten folgende Meldung:
    X von Macro2is
  5. Klicken Sie auf OK.
Makro2 zeigt keinen Wert für die Variable X ist die Variable X lokale Makro1.

zurück zum Anfang

Private und öffentliche Modulebene Bereich

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

Gehen Sie folgendermaßen vor, um die Differenz zwischen der Public -Anweisung und die Dim -Anweisung finden Sie unter:
  1. Speichern Sie und schließen Sie alle geöffneten Arbeitsmappen öffnen Sie eine Newworkbook.
  2. Visual Basic-Editor zu starten.
  3. Fügen Sie ein Modul in das Projekt ein.
  4. Geben Sie in diesem Modul den folgenden Code ein:
    Public x As IntegerSub Macro_1a()x = 10MsgBox xMacro_1bEnd SubSub Macro_1b()x = x * 2MsgBox xMacro2End Sub
  5. Legen Sie ein weiteres Modul in Ihrem Projekt.
  6. Geben Sie in diesem Modul den folgenden Code ein:
    Sub Macro2()x = x * 3MsgBox xEnd Sub
  7. Führen Sie das Makro Macro_1a im ersten Modul.

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

    So:
    Dim x As Integer
  9. Das Macro_1a -Makro ausgeführt.

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

    So:
    Private x As Integer
  11. Das Macro_1a -Makro ausgeführt.
Die Dialogfelder werden Private -Anweisungsbereichs mit, 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 Geltungsbereich der Variable auf das Modul, in dem es deklariert ist, Private -Anweisung anstelle der Dim -Anweisung. Sie erzielen den gleichen Effekt, haben jedoch deutlicher beim Lesen des Codes Private -Anweisung verwenden.

zurück zum Anfang

Lebensdauer einer Variablen

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

zurück zum Anfang

Den Wert einer Variablen initialisieren

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

zurück zum Anfang

Variablen auf Prozedurebene

Haben Sie eine Variable, die ein Makro mit der Dim -Anweisung deklariert wird, behält die Variable ihren Wert als das Makro ausgeführt wird. Wenn dieses Makro Makros aufruft, wird der Wert der Variablen beibehalten (die Makros nicht verfügbar wenn) als auch diese Makros ausgeführt werden.

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

    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:
    x, wie Makro2
  6. Klicken Sie auf OK.

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

zurück zum Anfang

Static-Schlüsselwort

Wenn eine Variable auf Prozedurebene mit dem Schlüsselwort Static deklariert wird, behält die Variable ihren Wert Projekt zurückgesetzt wird. Daher haben Sie eine statische Variable nächsten, die Prozedur aufrufen, die statische Variable mit ihren letzten Wert initialisiert wird.

Gehen Sie folgendermaßen vor, um das Static-Schlüsselwort Funktionsweise:
  1. Ändern Sie den Code im Makro1 an:
    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. Führen Sie Macro1 aus.

    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 aus.

    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.
In den Nachrichten angezeigt unterscheiden sich erneut die Variable X als statische Variable deklariert und die Variable behält ihren Wert nach Makro1 das erste Mal ausgeführt.

Hinweis Haben Sie eine Variable auf Modulebene, 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 mit Macro1 wie folgt:
    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. Führen Sie Macro1 aus.

    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 aus.

    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.
In den Nachrichten angezeigt unterscheiden sich erneut die Variable X als statische Variable deklariert und behält ihren Wert, nachdem Makro1 das erste Mal ausgeführt.

zurück zum Anfang

Zurücksetzen eines Projekts Variablen zurücksetzen

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 Makro1Makro1wiederholen, wird der Wert der Variablen X auf NULL initialisiert, und die erste Meldung:
der initialisierte Wert von x ist 0
Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
843145 Beschreibung des Excel Sub-Prozeduren in Visual Basic for Applications (Arrays)
Sub-Prozeduren VBA Variablen Var xl2007 xl2003 xl2000 xl2002 xl

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 843144 – Letzte Überarbeitung: 10/04/2015 11:54:00 – Revision: 10.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 KbMtde
Feedback
>&t="> "//c.microsoft.com/ms.js'><\/script>");