Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable in mehreren Subs verwenden

Forumthread: Variable in mehreren Subs verwenden

Variable in mehreren Subs verwenden
07.07.2020 14:05:17
Pascal
Hallo Zusammen,
gibt es eine Möglichkeit eine Variable in unterschiedlichen Subs zu verwenden ?
Beispiel:
Sub abc ()
RT = Application.GetOpenFilename()
Set template = Workbooks.Open(RT)
ws1 = template.Worksheets("Routine Work")
End Sub
Anschließend möchte ich das ws1 in einem weiteren

Sub verwenden
Beispiel

Sub xyz ()
Dim Val as Variant
val = ws1.Range("A1").value
End Sub

Gruß Pascal
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable in mehreren Subs verwenden
07.07.2020 14:15:03
Nepumuk
Hallo Pascal,
so:
Option Explicit

Private ws1 As Worksheet

Sub abc()
    Dim RT As Variant
    Dim template As Workbook
    RT = Application.GetOpenFilename()
    Set template = Workbooks.Open(RT)
    ws1 = template.Worksheets("Routine Work")
End Sub

Sub xyz()
    Dim Val As Variant
    Val = ws1.Range("A1").Value
End Sub

Gruß
Nepumuk
Anzeige
du hast Set vergessen
07.07.2020 14:17:52
Rudi
Hallo,
muss doch wohl
Set ws1 = template.Worksheets("Routine Work")
heißen.
Gruß
Rudi
AW: Variable in mehreren Subs verwenden
07.07.2020 14:15:57
Rudi
Hallo,
Public ws1 as Worksheet
Sub abc ()
RT = Application.GetOpenFilename()
Set template = Workbooks.Open(RT)
Set ws1 = template.Worksheets("Routine Work")
End Sub
Gruß
Rudi
Anzeige
AW: Variable in mehreren Subs verwenden
07.07.2020 15:08:30
Daniel
Hallo,
Das funktioniert prima! Vielen Dank
AW: Variable in mehreren Subs verwenden
07.07.2020 15:08:31
Daniel
Hallo,
Das funktioniert prima! Vielen Dank
;
Anzeige
Anzeige

Infobox / Tutorial

Variablen in mehreren Subs effektiv nutzen


Schritt-für-Schritt-Anleitung

Um eine VBA globale Variable über mehrere Module oder Subs zu definieren, kannst du folgende Schritte befolgen:

  1. Definiere die Variable als Public in einem Modul, damit sie in allen anderen Modulen und Subs verfügbar ist. Das geht so:

    Public ws1 As Worksheet
  2. In deinem ersten Sub, beispielsweise abc, weise der Variable einen Wert zu:

    Sub abc()
       Dim RT As Variant
       Dim template As Workbook
       RT = Application.GetOpenFilename()
       Set template = Workbooks.Open(RT)
       Set ws1 = template.Worksheets("Routine Work")
    End Sub
  3. In einem anderen Sub, wie xyz, kannst du nun die globale Variable ws1 verwenden:

    Sub xyz()
       Dim Val As Variant
       Val = ws1.Range("A1").Value
    End Sub

Mit dieser Methode kannst du die Excel VBA Variable für alle Module definieren und sie in verschiedenen Subs verwenden.


Häufige Fehler und Lösungen

  • Fehler: "Object variable or With block variable not set"

    • Lösung: Stelle sicher, dass du Set verwendest, wenn du der Worksheet-Variable ws1 einen Wert zuweist. Beispiel:
      Set ws1 = template.Worksheets("Routine Work")
  • Fehler: "Variable not defined"

    • Lösung: Überprüfe, ob die Variable als Public deklariert wurde. Stelle sicher, dass du die Anweisung in einem Modul platziert hast, nicht in einem Sub.

Alternative Methoden

Es gibt verschiedene Ansätze, um Variablen in VBA zu verwenden:

  • Verwenden von Static Variablen: Diese behalten ihren Wert zwischen den Aufrufen eines Subs, sind jedoch nicht global für andere Subs sichtbar.

  • Private Variablen in einem Modul: Du kannst auch Private Variablen in einem Modul definieren, um den Zugriff auf andere Module zu verhindern, was manchmal sinnvoll ist.


Praktische Beispiele

Hier ist ein einfaches Beispiel zur Veranschaulichung:

  1. Definiere die globale Variable in einem Modul:

    Public ws1 As Worksheet
  2. Erstelle ein Sub, das diese Variable verwendet:

    Sub BeispielSub()
       ' Einfache Operation mit der globalen Variable
       ws1.Cells(1, 1).Value = "Hallo Welt"
    End Sub

Du kannst dann BeispielSub von einem anderen Sub aus aufrufen, nachdem du ws1 korrekt initialisiert hast.


Tipps für Profis

  • Halte deine Variablen gut organisiert und benenne sie aussagekräftig, um die Lesbarkeit deines Codes zu erhöhen.
  • Vermeide es, zu viele globale Variablen zu verwenden, da dies zu Verwirrung führen kann. Nutze sie nur, wenn es wirklich nötig ist.
  • Dokumentiere deinen Code, um anderen (und dir selbst) zu helfen, den Zweck der Variablen und Subs zu verstehen.

FAQ: Häufige Fragen

1. Wie definiere ich eine globale Variable in VBA?
Du kannst eine globale Variable definieren, indem du sie als Public in einem Modul deklarierst.

2. Kann ich eine Variable in mehreren Subs verwenden?
Ja, wenn die Variable korrekt als Public deklariert ist, kannst du sie in verschiedenen Subs und Modulen verwenden.

3. Was ist der Unterschied zwischen Public und Private Variablen?
Public Variablen sind in allen Modulen verfügbar, während Private Variablen nur innerhalb des Moduls, in dem sie deklariert wurden, zugänglich sind.

4. Muss ich Set verwenden, wenn ich einer Worksheet-Variable einen Wert zuweise?
Ja, bei der Zuweisung von Objektvariablen wie Worksheets musst du Set verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige