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

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, wie 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 ist, etwas in einer Variable speichern zu können, damit der Inhalt verwendet oder später in der Prozedur geändert werden kann. Dieses Dokument beschreibt die folgende Verwendung von Variablen in Visual Basic:
  • Wie Variablen deklariert werden.
  • Das Verfahren und die Projekte, die Variablen 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 Variablen mit einer Dim -Anweisung definieren, 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 Integer-Variable festgelegt. Die Variable X ist ein variant-Typ:
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 öffnen Sie einer Newworkbook schließen Sie alle geöffneten Arbeitsmappen.
  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 dem Variable_Test -Makro:
    x = 10

    An:
    x = "error"
  8. Führen Sie das Makro Variable_Test aus.
Sie erhalten einen Laufzeitfehler "Fehler" ist keine Ganzzahl und möchten die ganzzahlige Variable X dieser Zeichenfolge zuweisen.

zurück zum Anfang

Datentypen-Zusammenfassung

Die folgende Tabelle enthält allgemeine Variablen Datentypen:

DatentypSpeichergrößeZulässiger Bereich
Boolescher Wert 2 Byte True oder False
Ganze Zahl 2 Byte -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 bis 1,79769313486232E308 für positive Werte
Währung 8 bytes -922.337.203.685.477,5808 bis 922.337.203.685.477,5807
Datum 8 bytes 1. Januar 100 bis 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. Es folgen die Vorteile der Variablen, die mit diesem Datentyp deklariert werden:
  • Können Variablen enthalten, Zeichenfolge, Datum, Uhrzeit, Boolesch, Ornumeric-Werte.
  • Die Variablen können die Werte konvertieren, Containautomatically.
Der Nachteil ist, dass Variante-Variablen mindestens 16 Bytes an Arbeitsspeicher. 16 Bytes Arbeitsspeicher können in großen Prozeduren oder komplexen Modulen beträchtlich sein.

Um zu sehen, wie dies im Makro Variable_Test funktioniert, führen Sie diese Schritte aus:
  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 Sie lassen Sie die folgende Zeile und Makros funktionieren immer noch wie die Variablen X und y werden als Variant-Datentypen:
Dim x, y

zurück zum Anfang

Gültigkeitsbereich einer Variablen

Wenn Sie eine Variable deklarieren, kann oder kann nicht durch andere Makros im selben Modul in anderen Modulen oder in anderen Projekten angezeigt. Die Verfügbarkeit einer Variablen in Modulen wird als Bereich bezeichnet. Stehen die drei Typen der Gültigkeitsbereich auf Prozedurebene, private auf Modulebene, und öffentliche Modulebene. Der Gültigkeitsbereich hängt davon ab, wie und wo 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 sie deklariert ist. Festlegen den Wert einer Variablen, die Prozedur Umfang auf diese Variable Inhalt nicht durch andere Makros sehen.

Um sicherzustellen, dass eine Variable mit Gültigkeitsbereich auf Prozedurebene außerhalb der Prozedur nicht angezeigt wird, in dem sie 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 einen Wert für die Variable X nicht, 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 festlegen den Gültigkeitsbereich der Variablen mit Public -Anweisung, die Dim -Anweisung oder Private -Anweisung. Wenn Sie Public -Anweisung vor die Variable setzen, 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 der 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. Einfügen eines Moduls in Ihrem Projekt.
  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 der Variablen X-Declaredas "Öffentliche X As Integer" können alle drei Makros im Projekt X den Wert. Das erste Meldungsfeld zeigt den Wert 10. Die zweite Messagebox zeigt den Wert 20 (da Macro_1b2 X multipliziert). Das dritte Meldungsfeld zeigt den Wert 60 (da die Valueof X 20 Macro_1b geändert wurde, und es wurde multipliziert mit 3 Makro2).
  8. Ändern der Deklarationszeile im ersten Modul aus:
    Public x As Integer

    An:
    Dim x As Integer
  9. Macro_1a -Makro ausführen.

    Die Variable x deklariert "Dim X AsInteger", die Makros im ersten Modul den Wert X. Sothe zuerst haben Meldungsfeld zeigt den Wert 10, das zweite Meldungsfeld zeigt einen 20 (da Macro_1b2 X 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

    An:
    Private x As Integer
  11. Macro_1a -Makro ausführen.
Die Dialogfelder werden Private -Anweisungsbereichs mit, wie sie die Dim -Anweisung angezeigt. Die Variable X hat denselben Gültigkeitsbereich Private in das Modul, in dem sie deklariert ist.

Hinweis Soll den Gültigkeitsbereich der Variablen zu dem Modul, in dem sie deklariert ist, verwenden der Private -Anweisung anstelle der Dim -Anweisung. Sie erzielen den gleichen Effekt Bereich ist jedoch deutlicher beim Lesen des Codes die 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 es 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 ist eine leere Zeichenfolge initialisiert (""), und eine Zeichenfolge mit fester Länge der ASCII-Code 0. Variant-Variablen werden mit leeren initialisiert. Eine leere Variable wird 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 in einem 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 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 von 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:
    X isstill 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. Makro1 in Schritt 7 erneut ausführen, 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 Static-Schlüsselwort deklariert wird, behält die Variable ihren Wert Projekt zurückgesetzt wird. Daher haben Sie eine statische Variable wieder, die Prozedur aufrufen, die statische Variable mit ihren letzten Wert initialisiert wird.

Gehen Sie folgendermaßen vor, um das Schlüsselwort Static 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.
Werte in den Nachrichten unterscheiden sich erneut die Variable X wird 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.
Werte in den Nachrichten unterscheiden sich erneut die Variable X wird als statische Variable deklariert und behält ihren Wert, nachdem Makro1 das erste Mal ausgeführt.

zurück zum Anfang

Zurücksetzen eines 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 dies für das Projekt Makro1 und Makro1 erneutder Wert der Variablen X mit 0 initialisiert wird 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: 07/03/2016 08:06:00 – Revision: 12.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
html>>