Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1264to1268
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm Varianlen mitnehmen

UserForm Varianlen mitnehmen
Ximena
Guten Morgen :)
Ich habe ein Problem! Meine Makro schreibe ich zwar im Word, aber ich denke, dass es im Excel genauso funktioniert und hier bekomme ich immer die besten Antworten. Also nicht wundern, wenn ActiveDocument oder so steht ;)
Gut, nun zu meinem Problem. Ich habe eine riesen grosse Makro. Ich rufe in dieser Makro verschiedene Module auf. Die Makro sieht am Anfang so aus:
Sub SCC_SLR_Macro_V_1_0()
Call UserForm.UserForm(myMonth, myYear, myDivision)
Call OpenPowerPoint.OpenPowerPoint(myPPT)
GoSub Copy_Overview
GoSub Copy_Color_Buttons
GoSub Copy_Content
GoSub Change_Attachments
GoSub Header_and_Footer
GoSub Save_Excelfiles
Exit Sub
Call UserForm.UserForm ist ein Modul, in dem ich ein UserForm ausfüllen muss. Ich möchte dabei myMonth, myYear und myDivision übergeben in die riesen grosse Makro (deshalb stehen sie ja in den Klammern).
Gut, die Userform.UserForm Makro sieht so aus:
Sub UserForm(myMonth, myYear, myDivision)
UserForm1.Show
myMonth = UserForm1.TB_Month.Text
myYear = UserForm1.TB_Year.Text
myDivision = UserForm1.CB_Division.Text
End Sub
Nun gut, das klappt auch alles schön und gut. Wenn ich das UserForm aufrufe (initialize), dann lasse ich die Felder vorfüllen. Die Variablen, die ich weitergeben möchte, sollen aber nicht die vorgefüllten sein, sondern die, die der User eingibt. Denn myDivision ist vorgefüllt "please select", aber ich will ja das, was der User ausgefüllt hat.
Die Variable füllt es mir in der Userform Makro richtig, wenn ich auf den CommB_Ok klicke, aber wenn er dann in die UserForm.UserForm Makro springt, übernimmt er für mydivision das "please select"!
Nun zu meiner Frage:
Wie schaffe ich es, dass die Variable weitergegeben wird, die beim Klicken auf den Command Button CommB_Ok erstellt wird?
Hier noch die Userform Makro:
 Private Sub CommB_Cancel_Click()
'UserForm schliessen
Unload UserForm1
End Sub
Private Sub CommB_OK_Click()
'Checken, ob alle Felder ausgefüllt wurden
If TB_Month.Text = "" Or TB_Year.Text = "" Or CB_Division.Text = "Please select" Then
MsgBox "Please fill out all fields", vbOKOnly, Error
Exit Sub
Else
myMonth = TB_Month.Text
myYear = TB_Year.Text
myDivision = CB_Division.Text
Unload UserForm1
End If
End Sub
Private Sub CommB_Refresh_Click()
'Inhalte löschen
TB_Month.Text = ""
TB_Year.Text = ""
CB_Division.Text = "Please select"
End Sub
Private Sub UserForm_Initialize()
'das aktuelle Datum
myDate = Date
'das Datum vor einem Monat
myLastDate = DateAdd("m", -1, myDate)
'Monatsvariable als Long definieren
Dim myMonthAsNumber As Long
'der Monat als Zahl
myMonthAsNumber = Mid(myLastDate, 4, 2)
'der Name des Monats des Datums vor einem Monat
myMonth = MonthName(myMonthAsNumber)
'in das Feld Monat den letzten Monat eintragen
TB_Month = myMonth
'Jahresvariable als Long definieren
Dim myYearAsNumber As Long
'das Jahr als Zahl
myYearAsNumber = Mid(myLastDate, 7, 4)
'in das Feld Jahr das aktuelle Jahr eintragen
TB_Year = myYearAsNumber
'Divisionen in Combobox einfüllen
With Me.CB_Division
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
End Sub
Wäre echt froh um Hilfe!
Liebe Grüsse
Ximena

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: UserForm Varianlen mitnehmen
22.05.2012 11:19:44
fcs
Hallo Ximena,
in der Userform1 darfs du nicht mit
Unload UserForm1
arbeiten, wenn du Werte noch benötigst.
Du muß hier dann

Userform.Hide
verwenden.
In der Procedur, die die Userform1 aufruft fügst du

Unload Userform1
nachdem du die Daten aus den Steuerelementen des Userforms ausgelesen hast.
Sub UserForm(myMonth, myYear, myDivision)
On Error Resume Next
Userform1.Show
myMonth = Userform1.TB_Month.Text
myYear = Userform1.TB_Year.Text
myDivision = Userform1.CB_Division.Text
Userform1.Unload
End Sub
Gruß
Franz
P.S.: Alternativ könntest du die drei Variablen auch Public Variablen in einem allgemeinen Modul deklarieren statt als Parameter der Prozedur. Dann kannst du Werte auch in den Prozeduren der Userform1 den Variablen zuweisen.
Anzeige
AW: UserForm Varianlen mitnehmen
22.05.2012 11:58:08
Ximena
Hallo Franz
Ich wusste, dass ich hier eine schnelle und kompetente Antwort bekomme!
Es funktioniert einwandfrei ;) Wenn ich mir jetzt überlege, ist es ja logisch xD
Danke vielmals für deine Hilfe!
Liebe Grüsse
Ximena

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige