Clever-Excel-Forum

Normale Version: [Excel 2016] Gedankenhilfe gesucht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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!
Ja, habe ich.
Beispieldatei ?
Ja, Beispieldatei habe ich.  19

[attachment=44788]
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.
Vielen Dank schonmal für deine Hilfe!

Undecided 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  22

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.  33
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.
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.
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
Ok, dann war ich ja doch richtig. Ich bekomme aber immer nur einen Laufzeitfehler: Index außerhalb des gültigen Bereichs.
Schient mir ziemlich logisch wenn es keine 12 pages im Multipage1 gibt.
Seiten: 1 2