Fragebogen erstellen und Eingaben in Excel speichern?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde es mit VBA und UserForm angehen. Da ich die Aufgabenstellung selbst spannend finde habe ich etwas gebastelt. Vieles kannst Du direkt übernehmen, es wird aber sicherlich dennoch notwendig sein, dass Du Dich für Anpassungen mit VBA auseinandersetzt.

Du brauchst: Drei Tabellenblätter
Start - einfach nur um die Userform aufrufen zu können, ggf. sonst noch Infos draufschreiben
Ergebnisse: Protokollieren der Eingaben
Fragen: Der Flexibilität wegen würde ich die Fragen und Antwortmöglichkeiten nicht im Code direkt eingeben, sondern dynamisch auslesen. Vom Aufbau her: Erste Zeile die Frage, die nächsten die Auswahloptionen. Ich gehe hier von max 4 Möglichkeiten aus, lässt sich aber erweitern. Gibt es zu einer Frage weniger Antwortmöglichkeiten als die Maximalanzahl wird der RadioButton ausgeblendet. Die Logik ist im Code hinterlegt (sub datensetzen)

Die Tabellenblätter Ergebnisse und Fragen kannst Du ausblenden, das braucht keine sehen bzw. sollte ungeprüft auch keiner ändern.


Unter Ribbon Entwicklertools eine Userform erstellen und ein Modul anlegen

Userform, s. Bild:
Ich habe eine einfache Lösung gebastelt: Ein Anzeigefeld (Label) für die Fragen, 4 Optionbutton für die Antworten, 2 Button: 1x weiter zur nächsten Frage und 1x Löschen der Antworten


Ins Modul:

'zwei globale Variablen:
Public click As Integer 'zählt die Fragen durch
Public zeile As Long 'die Zeile in der die Ergebnisse dokumentiert werden

Sub start() 'das Makro mit dem Button auf Tabellenblatt Start verbinden
click = 1
Call datensetzen
UserForm1.Show
End Sub

Sub datensetzen() 'lädt Frage und Antwortoptionen bzw. setzt die Beschriftungen in der Userform
Dim i As Integer
UserForm1.Label1.Caption = Sheets("Fragen").Cells(1, click).Value
For i = 1 To 4
UserForm1.Controls("OptionButton" & i).Caption = Sheets("Fragen").Cells(i + 1, click).Value
UserForm1.Controls("OptionButton" & i).Value = False
If Sheets("Fragen").Cells(i + 1, click).Value = "" Then UserForm1.Controls("OptionButton" & i).Visible = False Else UserForm1.Controls("OptionButton" & i).Visible = True
Next
End Sub

Sub ende() 'nach der letzten Frage und bei Abbruch Optionbutton ausblenden
click = 0
UserForm1.Label1.Caption = "Vielen Dank für die Teilnahme!"
UserForm1.OptionButton1.Visible = False
UserForm1.OptionButton2.Visible = False
UserForm1.OptionButton3.Visible = False
UserForm1.OptionButton4.Visible = False
UserForm1.CommandButton1.Caption = "Neustart"
UserForm1.CommandButton2.Enabled = False 'damit man nicht das fertige Ergebnis löschen kann

End Sub


in den Code zur Userform:

'Nur bei einem neuen Fragebogen notwendig: Werte und Beschriftung initialisieren
If click = 0 Then
UserForm1.CommandButton1.Caption = "Nächste Frage"
click = 1
Call datensetzen
Exit Sub
End If

' ausgewählten Optionbutton ermitteln
Dim myControl As Control
Dim auswahl As String
For Each myControl In UserForm1.Controls
If TypeName(myControl) = "OptionButton" Then
myControl.Visible = True
If myControl.Value = True Then auswahl = myControl.Caption
End If
Next

'bei der ersten Frage die letzte verwendete Zeile ermitteln. Zeitstempel in die nächste Zeile setzen
If click = 1 Then
zeile = Sheets("Ergebnisse").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Ergebnisse").Cells(zeile, click).Value = Now()
UserForm1.CommandButton2.Enabled = True
End If

'bei jeder weiteren Frage das Ergebnis protokollieren
Sheets("Ergebnisse").Cells(zeile, click + 1).Value = auswahl
click = click + 1
Call datensetzen

'nach der letzten Frage
If click = 4 Then Call ende
End Sub

Private Sub CommandButton2_Click()
Rows(zeile).Delete
Call ende
End Sub

 - (Microsoft Excel, Formular, Fragebogen)  - (Microsoft Excel, Formular, Fragebogen)
Herbertkurt 
Fragesteller
 08.08.2016, 09:21

Wau! Da hast du dich aber ins Zeug gelegt! Besten Dank!!! Werde heute wenn schauen ob ich weiterkomme mit meinem Formular. Habe noch keine VBA Kenntnisse. Mache mich aber mal etwas schlau... Danke für die Hilfe!

0

Meinst du mit Excel-Formularen die üblichen Excel-Tabellen oder Benutzerformulare?

Mit Excel-Tabellen ist es vermutlich nicht unmöglich, aber sehr schwierig.

Mit Benutzerformularen und Makros ist es einfach, erfordert aber Kenntnisse in VBA (Visual Basic for Applications).

Herbertkurt 
Fragesteller
 08.08.2016, 09:18

Habe schon gedacht mit benutzerformularen. Habe aber noch keine Erfahrung mit VBA. BIn mir gerade ein Tutorial am anschauen... :) Besten Dank.

0