Einführung

Bearbeiten

Im geschäftlichen Alltag können einfache Quiz- oder Formular-Funktionen oft mit den eingebauten Word-Steuerelementen (z. B. Dropdown-Menüs, Kontrollkästchen, Optionsfelder) erstellt werden, ohne VBA zu verwenden. VBA lohnt sich vor allem dann, wenn du komplexere Automatisierungen oder dynamische Funktionen brauchst.

Wozu VBA-UserForms im geschäftlichen Kontext dienen können

Bearbeiten
  • Komplexe Formulare und Prüfungen: Ein strukturiertes Formular, bei dem bestimmte Eingaben zu bestimmten Aktionen führen (z. B. automatisches Einfügen von Textbausteinen je nach Auswahl). Mit VBA kann Logik eingebaut werden, die über einfache Steuerelemente hinausgeht.
  • Dynamische Eingaben und Validierungen: Bei der Dateneingabe soll geprüft werden, ob alle Felder korrekt ausgefüllt sind (z. B. Pflichtfelder oder Formatprüfungen). Mit VBA kann man spezifische Fehlermeldungen einbauen und die Eingabe dynamisch steuern.
  • Berichte oder Vorlagen automatisch generieren: Ein UserForm fragt verschiedene Daten ab und erstellt daraus automatisch einen kompletten Bericht oder eine individuelle Vorlage. Mit VBA spart man Zeit bei wiederkehrenden Aufgaben.
  • Schulungs- und Einarbeitungsprozesse: Ein Quiz oder ein Prüfungsformular für Mitarbeiterschulungen (z. B. Compliance-Training oder IT-Sicherheitsrichtlinien). Mit VBA kann Punktestand oder Feedback automatisch berechnet und angezeigt werden.
  • Prozesse vereinfachen und automatisieren: Eine automatisierte Checkliste, bei der der Status der Aufgaben dokumentiert wird. Mit VBA können erledigte Punkte automatisch zusammengefasst oder in eine Übersicht übertragen werden.

Interaktives Formular

Bearbeiten
  1. in einem neuen Worddokument oben irgendwo «Bestellformular» schreiben
  2. Register «Einfügen» → Gruppe «Tabellen» → «Tabelle» → Tabelle mit zwei Spalten und sieben Zeilen einfügen
  3. In die sieben Zellen der ersten Spalte schreiben: “Ansprechpartner”, “Dienstleistung”, “Ort”, “Lieferdatum”, “Anzahl”, “Foto”, “Anmerkungen”
  4. Wir fügen nun interaktive Elemente in die rechte Spalte ein. In Zelle B1 klicken: Register «Entwicklertools» → Gruppe «Steuerelemente» → «Nur-Text-Inhaltssteuerelement»
  5. In Zelle B2 untereinander schreiben: “Montage”, “Reparatur”, “Ersatz”. Vor jedes der drei Wörter ein Leerzeichen, dann «Entwicklertools» → «Steuerelemente» → «Kontrollkästchensteuerelement» (= Checkbox), bei Bedarf «Eigenschaften» anpassen
  6. In Zelle B3: «Entwicklertools» → «Steuerelemente» → «Dropdownlisten-Inhaltssteuerelement» → «Eigenschaften» → «Hinzufügen», zum Beispiel „Basel”, „Bern“ und „Zürich” eingeben
  7. In Zelle B4: «Entwicklertools» → «Steuerelemente» → «Datumsauswahl-Inhaltssteuerelement» (= Datepicker, um Daten auszuwählen)
  8. In Zelle B5: «Entwicklertools» → «Steuerelemente» → «Kombinationsfeld-Inhaltssteuerelement» → «Eigenschaften» → «Hinzufügen», zum Beispiel „1”, „2” und „3“ eingeben (wer dann das Formular ausfüllt, kann auch etwas anderes als „1“, „2“ oder „3“ reinschreiben)
  9. In Zelle B6: «Entwicklertools» → «Steuerelemente» → «Bildinhaltssteuerelement» zum Bilder hochladen
  10. In Zelle B7: «Entwicklertools» → «Steuerelemente» → «Rich-Text-Inhaltssteuerelement» (wer dann das Formular ausfüllt, kann den Text frei formatieren)
  11. Zeilen 3 bis 5 markieren, dann Register «Layout» (neben «Tabellenentwurf»)
  12. Checkboxen markieren, dann Register «Start» → Gruppe «Schriftart» → Schriftgrösse 14
  13. Zelle B6 markieren, dann Register «Layout» (neben «Tabellenentwurf») → Gruppe «Ausrichtung» → mittig
  14. Rahmen entfernen: Register «Tabellenentwurf» → Gruppe «Rahmen» → kein Rahmen
  15. Register «Entwicklertools» → Gruppe «Schützen» → «Bearbeitung einschränken»: Menu rechts öffnet sich → «Bearbeitungseinschränkungen» → ☑ «Nur diese Bearbeitungen im Dokument zulassen» → «Ausfüllen von Formularen» → «Ja, Schutz jetzt anwenden»: Pop-Up «Dokumentenschutz anwenden» → ohne Kennwort «OK»

Interaktive Dialogfenster

Bearbeiten

Interaktive Dialogfenster sind benutzerdefinierte Eingabefelder, die Informationen vom Benutzer abfragen und diese direkt in das Dokument integrieren. Beispiele sind:

  • Eingabe von Namen, Daten oder Adressen
  • Auswahl von Optionen aus Dropdown-Listen
  • Bestätigungsabfragen

Beispiel-Makro

Bearbeiten

Folgendes Makro fragt den Benutzer nach einem Namen und fügt diesen im Dokument ein:

Sub BenutzerNameAbfragen()
Dim BenutzerName As String
BenutzerName = InputBox("Geben Sie Ihren Namen ein:", "Name eingeben")
If BenutzerName <> "" Then
Selection.TypeText "Willkommen, " & BenutzerName & "!"
Else
MsgBox "Keine Eingabe erfolgt.", vbExclamation, "Hinweis"
End If
End Sub
InputBox: Öffnet ein Dialogfenster zur Eingabe eines Namens.
If...Then: Prüft, ob eine Eingabe erfolgt ist.
Selection.TypeText: Fügt den Namen ins Dokument ein.
MsgBox: Zeigt eine Nachricht, wenn keine Eingabe erfolgt.

Für komplexere Dialoge kannst du UserForms erstellen. Diese ermöglichen mehrere Felder, Dropdowns und Schaltflächen:

  • Briefgenerator: Abfragen von Empfängername, Adresse und Datum.
  • Berichtsgenerator: Auswahl von Kategorien oder Datenbereichen.
  • Formatierungshelfer: Auswahl von Schriftart, Farbe und Stil.

UserForm für das Quiz erstellen

Bearbeiten
  1. Öffne den VBA-Editor
  2. Gehe zu „Einfügen“ > „UserForm“.
  3. Gib der UserForm den Namen UserForm1 (im Eigenschaftenfenster „Name“ ändern).

Steuerelemente zur UserForm hinzufügen

Bearbeiten

Label für die Frage:

Name: lblQuestion
Caption: „Was ist der schönste Ort der Schweiz?“

OptionButton1:

Name: OptionButton1
Caption: „Zermatt“

OptionButton2:

Name: OptionButton2
Caption: „Luzern“

OptionButton3:

Name: OptionButton3
Caption: „Olten“

CommandButton zum Bestätigen der Antwort:

Name: cmdSubmit
Caption: „Antwort prüfen“

Quiz-Code für die UserForm einfügen

Bearbeiten
  1. Doppelklicke auf die UserForm1, um den Code-Editor zu öffnen.
  2. Füge folgenden Code ein:
Private Sub cmdSubmit_Click()
If OptionButton3.Value = True Then
MsgBox "Richtig! Der schönste Ort der Schweiz ist Olten.", vbInformation
Else
MsgBox "Falsch! Die richtige Antwort ist Olten.", vbExclamation
End If
Unload Me  ' Schließt die UserForm nach der Antwort
End Sub

Makro zum Starten der UserForm erstellen

Bearbeiten
  1. Gehe zu „Einfügen“ > „Modul“ im VBA-Editor.
  2. Füge folgenden Code ein:
Sub StartQuiz()
UserForm1.Show
End Sub

Automatisches Starten beim Öffnen des Dokuments

Bearbeiten
  1. Klicke im VBA-Editor auf „ThisDocument“.
  2. Füge folgenden Code ein:
Private Sub Document_Open()
StartQuiz
End Sub

Dokument speichern und testen

Bearbeiten
  1. Speichere das Dokument als makrofähiges Word-Dokument (.docm).
  2. Schließe das Dokument.
  3. Öffne das Dokument erneut.

Teilnahmebestätigung generieren

Bearbeiten

Erstelle neues Modul zur automatischen PDF-Erstellung

Bearbeiten
Sub GenerateCertificate()
Dim doc As Document
Set doc = Documents.Add
' Titel hinzufügen
doc.Content.Text = "Zertifikat" & vbCrLf
doc.Content.Font.Size = 36
doc.Content.Paragraphs.Alignment = wdAlignParagraphCenter
' Name des Benutzers (optional)
doc.Content.Text = doc.Content.Text & vbCrLf & "Herzlichen Glückwunsch!" & vbCrLf & _
"Sie haben am Quiz teilgenommen. Bitte drucken Sie diese Teilnahmebestätigung aus, unterschreiben Sie sie und reichen Sie sie beim Sekretariat ein."
' PDF speichern (im Standard-Speicherort)
doc.SaveAs2 Environ("USERPROFILE") & "\Desktop\Zertifikat.pdf", wdFormatPDF
' PDF-Dokument öffnen
doc.Close
Shell "explorer.exe " & Environ("USERPROFILE") & "\Desktop\Zertifikat.pdf", vbNormalFocus
End Sub


Anpassung des cmdSubmit_Click-Codes

Bearbeiten

Stelle sicher, dass der Code zum Überprüfen der Antwort und zum Erstellen des Zertifikats korrekt ist:

Private Sub cmdSubmit_Click()
If OptionButton3.Value = True Then
MsgBox "Richtig! Der schönste Ort der Schweiz ist Olten.", vbInformation
Else
MsgBox "Falsch! Die richtige Antwort ist Olten.", vbExclamation
End If
' Zertifikat nach Abschluss des Quiz erstellen
GenerateCertificate
' UserForm schließen
Unload Me
End Sub

Wenn das Quiz abgeschlossen ist und die Antwort überprüft wurde, wird das Zertifikat als PDF auf dem Desktop des Benutzers gespeichert und automatisch geöffnet.