Registriert seit: 19.03.2018
Version(en): 2016
Moin!
Ich benötige ein wenig Unterstützung bei folgendem Problem:
Ich habe eine Userform mit diversen Multipages. In diesen Pages befinden sich sowohl Checkboxen, Textboxen sowie auch RadioButtons. Von diesen Pages sind aber nur gewisse Werte relevant für in einer Listbox gewählte Personenkreise. Der Rest wird ausgeblendet. Der User bekommt jedes Mal eine Messagebox mit einem Hinweis, wenn er ein für sein Personenkreis relevantes Steuerelement vergessen hat auszufüllen, anzuhaken etc.
Nun finde ich einfach keine vernünftige Lösung aus diesen ganzen verschiedenen benötigten Steuerelemten immer nur die abzufragen, die relevant sind. Hat da jemand eine Idee wie ich das gestalten kann ohne zig tausende if Abfragen?
Danke für die Hilfe!
Lieber Gruß!
Registriert seit: 29.09.2015
Version(en): 2030,5
Ja, habe ich.
Beispieldatei ?
Registriert seit: 19.03.2018
Version(en): 2016
Ja, Beispieldatei habe ich.
Beispiel.xlsm (Größe: 15,03 KB / Downloads: 6)
Lieber Gruß!
Registriert seit: 29.09.2015
Version(en): 2030,5
Code:
Private Sub UserForm_Initialize()
ComboBox1.List = [row(1:3)]
End Sub
Private Sub ComboBox1_Change()
For j = 0 To 3
MultiPage1.Pages(j).Visible = InStr(Array("23", "01", "03")(ComboBox1 - 1), j)
Next
End Sub
Verzichte auf msgboxes in Userforms.
Registriert seit: 19.03.2018
Version(en): 2016
25.08.2022, 13:49
(Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2022, 13:50 von SHack.)
Vielen Dank schonmal für deine Hilfe!

Wie auf MsgBoxes verzichten? Wie weise ich den DAU dann daraufhin, dass er etwas vergessen hat? Der Button darf solange nicht ausgeführt werden, solange eine Angabe fehlt. Also doch 100 verschachtelte If Abfragen
Scheinbar habe ich mein Beispiel auch zu simpel gehalten, denn die Listbox enthält beliebig viele Strings (Je nachdem ob neue Personenkreise entstehen) und es wird aktuell 11 (im Entwicklungsverlauf evtl. noch mehr) Pages geben.
Schande über mein Haupt, für das schlampige Beispiel.
Lieber Gruß!
Registriert seit: 29.09.2015
Version(en): 2030,5
25.08.2022, 14:22
(Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2022, 14:26 von snb.)
Besser als ein Msgbox ist ein Commandfbutton 'weiter' die nur sichtbar ist wenn alles notwendiges erledigt ist.
Ohne sichtbare CommandButton kann der User nicht weiter.
Mehr Einträge im ListBoxc ist kein Thema, wedre mehr Pages; die Vorgehensweise (Methode) bleibt ähnlich.
Registriert seit: 19.03.2018
Version(en): 2016
An einer Stelle vertsehe ich nicht ganz was passiert:
Code:
InStr(Array("23", "01", "03")(ComboBox1 - 1)
Könntest du mir erklären, was genau da passiert? Bekomme es nicht hin das so umzuwandeln, dass Beispielsweise jemand die Pages 0,1,2,5,9,10,11 bekommt.
Lieber Gruß!
Registriert seit: 29.09.2015
Version(en): 2030,5
25.08.2022, 14:53
(Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2022, 15:31 von snb.)
Code:
Private Sub ComboBox1_Change()
For j = 0 To Multipage1.Pages.Count-1
MultiPage1.Pages(j).Visible = InStr(Array("0123591011", "01", "03")(ComboBox1 - 1), j)
Next
End Sub
Registriert seit: 19.03.2018
Version(en): 2016
Ok, dann war ich ja doch richtig. Ich bekomme aber immer nur einen Laufzeitfehler: Index außerhalb des gültigen Bereichs.
Lieber Gruß!
Registriert seit: 29.09.2015
Version(en): 2030,5
25.08.2022, 15:30
(Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2022, 15:31 von snb.)
Schient mir ziemlich logisch wenn es keine 12 pages im Multipage1 gibt.