ich bin momentan dabei einen Fragebogen in VBA zu entwerfen. Ich arbeite im Team mit Leuten, die keine VBA-Kenntnisse haben. Daher haben wir uns darauf verständigt, dass sich diese Leute um die Fragen, Hilfetexte und Vorgaben zur zwingenden Formatierung kümmern, diese in einer Exceldatei in drei Spalten untereinander schreiben und ich daraus einen Fragebogen mache.
Daher gehe ich so vor, dass beim Initialisieren des Fragebogens die Labels, die die Fragen anzeigen sollen, sich aus der Spalte A speisen (controls("Label" & irow).caption= cells(irow,1).value). Die Antworten, die im Fragebogen in den entsprechenden Textboxen eingegeben werden, werden beim Klick auf Commandbutton1 der jeweiligen userform in Spalte B eingetragen.
Das klappt ganz gut. Eiin großes Problem ist jedoch, dass ich keine gute Lösung für Antworten gefunden habe, die selbst widerum Fragen beeinflussen.
So stelle ich in userform6 eine Frage nach der Anzahl (1 bis max 3) von Irgendwas. Und je nach dem welche Anzahl angegeben wird, sollen in der folgenden Userform 3, 6 oder 9 Eingabefelder entstehen. Eine Lösung sind dynamische Userforms, die entsprechend weitere Textboxen einblenden.
Jedoch ist es wichtig, dass die gegebenen Antworten bei den befragten immer wieder in den Textboxen zu sehen sind. Z.B. wenn die Exceldatei geschlossen und am nächsten Tag wieder geöffnet wird. Textbox1.text = cells(2,2).value funktioniert dort nicht.
Daher habe ich mit einem if statement und drei userforms gearbeitet: userform6_1, userform6_2 und userform6_3. Je nachdem was in userform6 ausgewählt wird, erscheint die entsprechende weitere userform.
1. Hat jemand hierfür eine geschicktere Lösung?
Falls es tatsächlich keine geschicktere Lösung gibt bzw. es nur eine Lösung gibt, die mein VBA-Kenntnisgrad übersteigt, stellt sich ein weiteres Problem.
Ich möchte in der abschließenden userform prüfen, ob alle Fragen beantwortet wurden. Daher habe ich in jeder vorangehenden userform festgelegt, dass wenn die Antworten gegeben wurden (textbox nullstring) der commandbutton = vbcyan werden soll. in der abschließenden userform wird dann geprüft, ob zu jeder vorangehenden userform der commandbutton = vbcyan ist und erst dann wird der Abschluss gewährt.
Dieses If Statement bekomme ich aber nur für die userforms1-6 hin. Bei den Verzweigungen 6_1, 6_2 und 6_3, von denen ja immer nur eine zutreffend sein wird, scheitere ich.
2. Wie kann man in einem if statement also für 1-6 "and" prüfen und abschließend für 6_1, 6_2 und 6_3 nach "or" prüfen? Oder gibt es insgesamt eine bessere Lösung?
Dank im Voraus.