Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: variable aus modul in userform übergeben

variable aus modul in userform übergeben
23.02.2018 12:12:32
duplex1000
Hallo,
da ich nun schon stundenlang suche und einfach keine funktioniernde Lösung finde, ersuche ich um Unterstützung.
Ich habe folgendes Modul:

Sub test()
Dim i As Long
lz = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lz
If Cells(i, 6).Value = "" Then
Cells(i, 6).Activate
UserForm1.Show
End If
Next
End Sub

Und folgendes Formular/folgede Userform:

Sub OkButton_Click()
MsgBox i
End Sub
Wie bekomme ich nun "i" aus dem Modul dazu in der MsgBox auszugeben zu werden.
Alle mein Versuche mit puplic oder ähnlich sind leider bisher kläglich gescheitert.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variable aus modul in userform übergeben
23.02.2018 12:20:27
Beverly
Hi,
da gibt es mehrere Möglichkeiten:
- schreibe die Variable in die Tag-Eigenschaft des UserForms (oder eines Steuerelementes auf dem UserForm) und rufe sie im Activate-Ereignis des UserForms dann ab
- definiere die Variable als Public außerhalb des Makros Sub Test() im Standardmodul


Anzeige
AW: variable aus modul in userform übergeben
23.02.2018 12:31:27
duplex1000
Zweiteres hätte ich so probiert:
puplic i As Long
Sub test()
lz = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lz
If Cells(i, 6).Value = "" Then
Cells(i, 6).Activate
UserForm1.Show
End If
Next
End Sub
Führt aber leider immer zu einem:
"Fehler beim Kompilieren:
Erwartet: Anweisungsende"
1. Variante kann ich leider noch nicht ganz umsetzen. Wäre das so etwa zu lösen?:

Sub test()
Dim i As Long
lz = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lz
If Cells(i, 6).Value = "" Then
Cells(i, 6).Activate
UserForm1.Tag = i
UserForm1.Show
End If
Next
End Sub

Anzeige
AW: variable aus modul in userform übergeben
23.02.2018 15:24:20
Beverly
Zu deinem 1. Code hast du ja bereits die Lösung erhalten.
Deinen 2. Code solltest du einfach mal testen. ;-)


AW: variable aus modul in userform übergeben
23.02.2018 12:22:49
Rudi
Hallo,
in deinem Modul:
Public i as long
Sub test()
lz = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lz
If Cells(i, 6).Value = "" Then
Cells(i, 6).Activate
UserForm1.Show
End If
Next
End Sub

Gruß
Rudi
Anzeige
AW: variable aus modul in userform übergeben
23.02.2018 12:38:22
duplex1000
ich finde leider meinen Fehler nicht. :(
Userbild
wer lesen kann, ....
23.02.2018 12:48:30
Rudi
...ist klar im Vorteil
Public! nicht Puplic
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA-Variablen in UserForms übergeben


Schritt-für-Schritt-Anleitung

Um eine VBA-Variable an ein UserForm zu übergeben, kannst du die folgenden Schritte befolgen:

  1. Definiere die Variable als Public: Stelle sicher, dass die Variable außerhalb des Makros deklariert wird, damit sie in der gesamten Datei zugänglich ist. Zum Beispiel:

    Public i As Long
  2. Modifiziere das Modul: Ändere die Subroutine, um die Variable in das UserForm zu übergeben:

    Sub test()
       Dim lz As Long
       lz = Cells(Rows.Count, 2).End(xlUp).Row
       For i = 1 To lz
           If Cells(i, 6).Value = "" Then
               Cells(i, 6).Activate
               UserForm1.Show
           End If
       Next
    End Sub
  3. Verwende die Variable im UserForm: In der UserForm kannst du die Variable wie folgt verwenden:

    Sub OkButton_Click()
       MsgBox i
    End Sub
  4. UserForm aktivieren: Stelle sicher, dass das UserForm korrekt aktiviert wird, um die Werte anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Erwartet: Anweisungsende: Dieser Fehler tritt häufig auf, wenn der Variablenname falsch geschrieben ist. Achte darauf, dass du Public korrekt schreibst (nicht Puplic).

  • Variable wird nicht angezeigt: Wenn die Variable nicht im MsgBox angezeigt wird, stelle sicher, dass das UserForm vor dem Aufruf der MsgBox korrekt angezeigt wird.


Alternative Methoden

Es gibt mehrere Möglichkeiten, Werte in ein UserForm zu übergeben:

  • Tag-Eigenschaft verwenden: Du kannst die Tag-Eigenschaft eines Steuerelements im UserForm nutzen, um die Variable zwischenzuspeichern:

    UserForm1.Tag = i

    Im Activate-Ereignis des UserForms kannst du dann auf diesen Wert zugreifen.

  • Eigene Eigenschaften erstellen: Du kannst auch eigene Eigenschaften im UserForm definieren, um Werte zu übergeben und zu speichern.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du eine Variable an ein UserForm übergibst und sie dort anzeigst:

Public i As Long

Sub test()
    Dim lz As Long
    lz = Cells(Rows.Count, 2).End(xlUp).Row
    For i = 1 To lz
        If Cells(i, 6).Value = "" Then
            Cells(i, 6).Activate
            UserForm1.Show
        End If
    Next
End Sub

' Im UserForm
Sub OkButton_Click()
    MsgBox "Die aktuelle Zeile ist: " & i
End Sub

Tipps für Profis

  • Verwende Option Explicit: Um sicherzustellen, dass alle Variablen deklariert sind, solltest du Option Explicit am Anfang deines Moduls verwenden. Dies hilft, Fehler zu vermeiden.

  • Debugging nutzen: Verwende Debugging-Tools, um zu überprüfen, ob die Variable den erwarteten Wert hat, bevor du das UserForm anzeigst.

  • Variablenüberprüfung: Überprüfe die Werte der Variablen in den verschiedenen Schritten deines Codes, um sicherzustellen, dass sie korrekt zugewiesen werden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Variablen an das UserForm übergeben?
Du kannst mehrere Public-Variablen definieren und sie auf die gleiche Weise an das UserForm übergeben.

2. Was muss ich beachten, wenn ich UserForms in Schleifen aufrufe?
Achte darauf, dass das UserForm nicht mehrmals hintereinander angezeigt wird, ohne dass die vorherige Instanz geschlossen wurde. Das kann zu unerwartetem Verhalten führen.

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