Live-Forum - Die aktuellen Beiträge
Datum
Titel
25.10.2025 08:21:40
24.10.2025 18:10:41
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Globale Variablen in Userform und Modul

Globale Variablen in Userform und Modul
29.03.2019 13:27:27
Johann
Hallo,
mich interessiert, ob es möglich ist eine globale Variable in einer Userform zu definieren, dessen Wert dann in einem Modul verwendet werden kann.
Hier ein Beispiel für die Userform:
Public TextOutput As String
Private Sub Label1_Click()
End Sub
Private Sub Text1_Change()
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub CommandButton2_Click()
ActiveSheet.Range("A1:O9999").ClearContents
' ActiveSheet.Range("B2").Value = Einlesen.Text1
TextOutput = Einlesen.Text1
ActiveSheet.Range("C2").Value = TextOutput
End Sub
Private Sub CommandButton1_Click()
Unload Einlesen
Call output(TextOutput)
End Sub

Und hier für das Modul
Sub output(TextOutput)
TextShow = TextOutput
' TextShow = ActiveSheet.Range("B2").Value
ActiveSheet.Range("D2").Value = TextShow
End Sub
So wie es hier steht funktioniert es nicht. Alternativ kann der Wert der Variablen ja auch in eine Zelle geschrieben und dann im Module wieder eingelesen werden.
Aber der direkte Weg wäre der elegantere.
Für eine Lösung wäre ich dankbar.
Viele Grüße
Johann Herlyn
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Globale Variablen in Userform und Modul
29.03.2019 13:45:23
Daniel
Hallo Johann,
du brauchst eine globale Variable nicht als Parameter in die Funktion nehmen.
Sub Output() reicht.
Gruß
Daniel
AW: Globale Variablen in Userform und Modul
29.03.2019 13:52:16
Johann
Hallo Daniel,
hatte ich auch schon probiert, also ohne Public ... und nur call output() und sub output().
Funktionierte leider auch nicht.
Viele Grüße
Johann
Anzeige
AW: Globale Variablen in Userform und Modul
29.03.2019 13:57:23
Daniel

Public TextOutput As String
Sub Einlesen()
TextOutput = Cells(1, 1)
End Sub
Sub ausgeben()
Cells(24, 1) = TextOutput
End Sub
Kannst du ohne Probleme nacheinander ausführen, was im Prinzip etwas vereinfacht dasselbe ist wie bei dir.
AW: Globale Variablen in Userform und Modul
29.03.2019 14:20:02
Johann
Ja, wenn die globale Variable unter Module in verschiedenen Subs stehen, funktioniert es.
Aber anscheinend nicht, wenn sie unter Formulare und Module definiert sein und aufgerufen werden soll.
Viele Grüße
Johann
Anzeige
AW: Globale Variablen in Userform und Modul
29.03.2019 14:23:55
Daniel
Wenn du die Public Variable im Modul deklarierst, kannst du sie auch in den Tabellencodes nutzen, allerdings nur in derselben Arbeitsmappe.
Berücksichtige auch noch, was Hansueli geschrieben hat, sonst bricht er ohnehin immer ab.
Die Reihenfolge im Code ist falsch...
29.03.2019 14:09:53
EtoPHG
Hallo Johann,
  Unload Einlesen          ' Dies zerstört die Userform-Klasse
Call output(TextOutput)  ' Also läuft der Code NIE hier durch!
Bitte die Reihenfolge dieser Codezeilen vertauschen!
Gruess Hansueli
Anzeige
AW: Die Reihenfolge im Code ist falsch...
29.03.2019 14:24:06
Johann
Hilft leider auch nicht.
Im Einzelschritt-Debuggen ist auch zu sehen, dass nach Schließen der Userform zum Sub gesprungen wird.
Viele Grüße
Johann
AW: Die Reihenfolge im Code ist falsch...
29.03.2019 15:02:54
EtoPHG
Hallo Johann,
Du hast es offensichtlich nicht ausprobiert!
Das Unload zerstört die Userform-Klasse.
Das hat zur Folge das deine TextOutput Variable wieder den Initial-Wert (vbNullString) hat.
Projektweite Variablen müssen als Public in einem Standardmodul definiert werden und in keiner anderen Codeklasse!
Also definiere sie dort, dann kannst du sie auch in Codes deiner Userform gebrauchen.
Gruess Hansueli
Gruess Hansueli
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Globale Variablen in Userform und Modul nutzen


Schritt-für-Schritt-Anleitung

Um eine excel vba globale variable in einer Userform zu definieren und in einem Modul zu verwenden, folge diesen Schritten:

  1. Definiere die globale Variable: Öffne ein Modul und definiere die Variable mit Public. Beispiel:

    Public TextOutput As String
  2. Setze den Wert in der Userform: In deiner Userform kannst du den Wert der Variable setzen, wenn ein Button geklickt wird. Beispiel:

    Private Sub CommandButton2_Click()
       TextOutput = Einlesen.Text1
    End Sub
  3. Rufe die Funktion im Modul auf: Im Modul kannst du die Funktion ohne Parameter aufrufen, da die Variable bereits global ist:

    Sub output()
       ActiveSheet.Range("C2").Value = TextOutput
    End Sub
  4. Schließe die Userform: Stelle sicher, dass du die Userform erst nach dem Aufrufen der Funktion schließt, um sicherzustellen, dass die Variable nicht zurückgesetzt wird:

    Private Sub CommandButton1_Click()
       Call output
       Unload Einlesen
    End Sub

Häufige Fehler und Lösungen

  • Variable wird nicht erkannt: Stelle sicher, dass die vba globale variable im richtigen Modul als Public deklariert ist. Variablen, die in einer Userform definiert sind, sind nicht global.

  • Wert ist vbNullString: Wenn du die Userform schließt, bevor du den Wert der Variable nutzt, wird sie zurückgesetzt. Achte darauf, die Reihenfolge im Code zu beachten.


Alternative Methoden

Falls du die vba globale variable nicht verwenden möchtest, kannst du auch folgende Alternativen in Betracht ziehen:

  1. Wert in eine Zelle schreiben: Schreibe den Wert der Variable in eine Zelle und lese ihn später wieder aus.

    ActiveSheet.Range("A1").Value = Einlesen.Text1
  2. Verwendung von Access: Du kannst auch access globale variable nutzen, falls deine Anwendung in einer Access-Datenbank läuft, um Werte zwischen verschiedenen Modulen zu teilen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um das Konzept zu verdeutlichen:

' Modul
Public TextOutput As String

Sub Einlesen()
    TextOutput = Cells(1, 1).Value
End Sub

Sub ausgeben()
    Cells(24, 1).Value = TextOutput
End Sub

In deiner Userform:

Private Sub CommandButton1_Click()
    Call Einlesen
    Call ausgeben
End Sub

Das Beispiel zeigt, wie du die excel vba globale variable zwischen verschiedenen Modulen und Userform austauschen kannst.


Tipps für Profis

  • Nutze Public Variablen sparsam, um Konflikte zwischen verschiedenen Modulen zu vermeiden.
  • Verwende die Option Explicit Anweisung, um sicherzustellen, dass alle Variablen deklariert sind und keine Tippfehler in deinen Variablennamen entstehen.
  • Dokumentiere deine Variablen und deren Verwendung, um die Wartbarkeit des Codes zu erhöhen.

FAQ: Häufige Fragen

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

2. Warum funktioniert meine globale Variable nicht in der Userform?
Stelle sicher, dass die Variable im Modul und nicht in der Userform definiert ist. Zudem darf die Userform nicht vor der Verwendung der Variable geschlossen werden.

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