Userform 'beschriften' mit Variablen

Hallo zusammen,

bastle mir gerade ein Makro zusammen und bräuchte da mal Hilfe:

Ich will eine Userform machen wo ein Dropdown-Menü drin ist. Das krieg ich wohl noch hin.
Aber dadrüber soll ein Satz stehen in der Art „Für xxx wurde keine Kategorie gefunden, bitte wählen“.
xxx ist eine Variable die ich schon befüllt habe. Man soll dann halt entsprechend auswählen. Aber wie kriege ich diese Variable in den Satz in der Userform rein? MsgBox und Inputbox krieg ich hin, aber wie funktioniert das bei einem Formular? Hat da wer ne Idee?

Danke schonmal!

MfG

Hallo Brille,

meinst du sowas?:

UserForm1.Label1.Caption = "Für " & Variable & " wurde keine Kategorie gefunden, bitte wählen"

Gruß, Andreas

Hallo Andreas,

ja danke, jetzt habe ich es irgendwie hinbekommen!
Jetzt hab ich noch ein Problem dabei:
Kann ich auch eine Variable von dem Modul in der Userform benutzen?
Also mein Makro durchsucht mein Tabellenblatt nach dieser Variablen. Wenn diese Variable nicht da ist, dann soll sich erst das Formular öffnen, damit man sie halt nachtragen kann. Kann ich dann da die Variable aus dem Modul irgendwie benutzen? Will das Makro nicht nochmal komplett im Formular durchlaufen lassen. Gibs da sowas wie eine „globale“ Variable?

Danke schonmal!

MfG

Hallo Brille,

wenn du die Variable im Modul als Public definierst, müsste das doch gehen (siehe dazu die VBA Hilfe). Oder habe ich dich falsch verstanden. An sonsten zeig mal deinen Code.

Gruß, Andreas

1 Like

wenn du die Variable im Modul als Public definierst, müsste

Hallo Andreas,

ja so gehts (kannte ich so noch nicht)!

Danke!

Hallo Brille,

ja danke, jetzt habe ich es irgendwie hinbekommen!

naja, überzeugend klingen geht völlig annerster. Ich habe deinen Beitrag
Minuten vorher gelesen wo du schreibst daß du es nicht hinbekommen hast.
Du hattest geschrieben daß bei Erscheinen der UF im Label nur „Label1“
erscheint.

Völlig klar, du hattest die Codezeile von Andreas irgendwohin geschrieben
aber nicht dahin wo die UF Kenntnis davon erhält.
Nun kann man die .Caption eines Labels einer UF beim Starten der
UF befüllen, das wäre dann Userform_Load bzw. Userform_Activate.

Du könntest aber auch auf der UF einen Button anlegen der dann bei Klick
das Label füllt. Oder, oder,…

Mir wäre es lieb du zeigst mal deine Codes. Gerne auch in einer Beispielmappe.
Und noch wichtiger, beschreibe bitte mal chronologisch was da wie ablaufen soll.

Achja, was ich dich schon lange fragen wollte, du bist Brille, wurdest du
vom Optiker erstellt oder vom Schreiner? *lächel*

Gruß
Reinhard

Hallo Reinhard,

naja, überzeugend klingen geht völlig annerster.
Mir wäre es lieb du zeigst mal deine Codes. Gerne auch in
einer Beispielmappe.

Nach vielem tüfteln funktioniert jetzt eigentlich so wie ich es will, kann die Codes aber gerne reinstellen (hab aber nicht soviel Ahnung von VBA, sieht vielleicht bissl komisch aus für Leute die das können :stuck_out_tongue:)

Sub neu_test()
Dim Bereich As Range, Suche As Range
Dim x As Single

letzte = Worksheets(„Tabelle1“).Cells(Rows.Count, 19).End(xlUp).Row
letzte2 = Worksheets(„Fehlerursache“).Cells(Rows.Count, 1).End(xlUp).Row
letzte3 = Worksheets(„Stammdaten“).Cells(Rows.Count, 1).End(xlUp).Row

For x = 2 To letzte
Ursache = Worksheets(„Tabelle1“).Range(„s“ & x)

Set Bereich = Worksheets(„Fehlerursache“).Range(„a2:a“ & letzte2)

Set Suche = Bereich.Find(what:=Ursache, LookIn:=xlFormulas, lookat:=xlWhole)

If Not Ursache = „“ Then

If Suche Is Nothing Then
UserForm1.Show
letzte2 = Worksheets(„Fehlerursache“).Cells(Rows.Count, 1).End(xlUp).Row
End If
End If
Next

End Sub

Hiermit soll er Suchen, ob eine Ursache einer Kategorie zugeordnet ist, und wenn nicht soll er das Formular öffnen ( Ursache = „“, weil manchmal nix gefüllt ist)

Das Formular sieht dann so aus:

Sub userform_initialize()

UserForm1.Label1.Caption = "Fehlerursache nicht zugeordnet: " & vbCrLf & vbCrLf & Ursache
ComboBox1.RowSource = Worksheets(„Stammdaten“).Range(„a2:a“ & letzte3).Address(external:=True)

End Sub

Sub CommandButton1_Click()

Worksheets(„Fehlerursache“).Range(„A“ & letzte2 + 1).Value = Ursache
Worksheets(„Fehlerursache“).Range(„b“ & letzte2 + 1).Value = ComboBox1
Unload Me
End Sub

Und hier soll dann eine Kategorie ausgesucht werden und in die Fehlerursache geschrieben werden, damit nächsten Monat die nicht nochmal eingefügt werden müssen.

Achja, was ich dich schon lange fragen wollte, du bist Brille,
wurdest du
vom Optiker erstellt oder vom Schreiner? *lächel*

Vom Optiker nicht erstellt aber ausgestattet! vom Schreiner sähe das glaub ich komisch aus :stuck_out_tongue:

MfG und schönes WE schonmal

naja, überzeugend klingen geht völlig annerster.
Mir wäre es lieb du zeigst mal deine Codes. Gerne auch in
einer Beispielmappe.

Nach vielem tüfteln funktioniert jetzt eigentlich so wie ich
es will, kann die Codes aber gerne reinstellen (hab aber nicht
soviel Ahnung von VBA, sieht vielleicht bissl komisch aus für
Leute die das können :stuck_out_tongue:)

Hallo Brille vom Optiker :smile:,

ich finde etwas anderes komisch. Die Deklaration einer globalen Variable
namens Ursache kann ich nirgends entdecken.
Da stellt sich mir die Frage, was verschweigst du vllt. noch?

Auch „Sub userform_initialize()“ im UF-Modul empfinde ich sehr seltsam.
Ohne Eingriff deinerseits heißt das doch
Private Sub UserForm_Initialize()

Okay, ich kam noch nie auf den Gedanken das so umzuformen wie du das wohl
getan hast, irritiert mich halt.

Achja, ich kam mit VB durcheinander, dort lautet es schon
Form_Load
In Vba ist das UserForm_Initialize
Sorry.

Gruß
Reinhard

Die Deklaration einer
globalen Variable
namens Ursache kann ich nirgends entdecken.
Da stellt sich mir die Frage, was verschweigst du vllt. noch?

Aso sry, die stand ganz oben (war noch ein anderer Code dazwischen, deswegen hab ich die beim Kopieren vergessen)

Public Ursache as String

Auch „Sub userform_initialize()“ im UF-Modul empfinde ich sehr
seltsam.
Ohne Eingriff deinerseits heißt das doch
Private Sub UserForm_Initialize()

Ja die Unterschiede kenn ich nicht so richtig. Hab nur ein Grundlagenbuch und das Internet zur Verfügung und bastel mir den Code dann immer so zusammen…habs nie gelernt (deswegen wusst ich auch net wie man ne „Public“-Variable macht) :frowning:

MfG