Clever-Excel-Forum

Normale Version: VBA: Inhalt einer String-Variable von einer UF an weitere UF übergeben?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

folgende Situation:
- In einer UserForm habe ich eine Listbox in der 1 Monat des Jahres ausgewählt werden kann.
- Der gewählte Monat wird in der Variable gewMonat gespeichert und innerhalb des Codes der UserForm für den Klick auf "OK" verwendet.
- Bevor dieser Sub endet, wird eine weitere UserForm aufgerufen, die den Wert von gewMonat weiter nutzen soll.

Code:
With lbMonate
    For ListRow = 0 To .ListCount - 1
      If .Selected(ListRow) Then gewMonat = .List(ListRow)
    Next
  End With


So wird der Monat in der 1. UserForm abgefragt, der selbe Code funktioniert in der 2. Userform leider nicht (ergänzt um den Namen der UserForm. With UF1.lbMonate.......)

Wie bekomme ich den Namen des gewählten Monat, respektive den Wert der Variablen gewMonat, in die 2. UserForm übertragen?

EDIT: Ich habe den Tipp zur Globalen Variablen zwar schon befolgt, allerdings in der UF1 nochmal Dim gewMonat stehen gehabt. Nachdem ich diese Zeile entfernt habe, ging es einwandfrei.

Vielen Dank und freundliche Grüße,
Phiant
Du könntest eine globale Variable (nicht unbedingt Best practise, aber eine Möglichkeit)  verwenden, Du könntest die "Tag Property" verwenden oder Du könntest  eine Property anlegen. Bei den letzten beiden genannten Möglichkeiten, darf die Userform nicht entladen werden.
Moin allerseits,

wie schon erwähnt sind globale Variablen nicht ganz best practice, (dennoch manchmal ein einfacher oder auch unvermeidbarer Weg). Bei globalen kann nicht vermieden werden, dass sie an Stellen geändert werden, die man vielleicht nicht mehr auf dem Schirm hat, und wundert sich dann über die Ergebnisse...

Stabiler ist die Übergabe des Wertes als Parameter. Hier ein Beispiel:

Code:
Sub Absender()
Dim sPost As String
sPost = InputBox("Ein Brief ...", "Parameterübergabe")
Empfaenger sPost
End Sub


Sub Empfaenger(sPost As String)
MsgBox "Erhalten: " & sPost
End Sub

Viel Spaß damit!
... und jetzt das Ganze noch als Beispielmappe mit Userforms.