Beitrag aus SmartTools Word Weekly
Automatische Farbkennzeichnung in Formularen, Teil 2
Word 365 2024 2021 2019 2016 2013
Eine automatische Formatierung ist in Word-Formularen nicht vorgesehen, aber mit einem kleinen Trick kommen Sie dennoch zum Ziel. Nehmen wir beispielsweise an, dass Sie einen Fragebogen erstellen möchten, in dem die Probanden jede Frage mit drei vorgegebenen Auswahlmöglichkeiten beantworten können - zum Beispiel per Dropdownfeld. Die Auswahlmöglichkeiten fallen immer in die Kategorien "gut", "mittel" und "schlecht". Um dann schon auf den ersten Blick eine Tendenz zu erkennen, wäre es praktisch, wenn Antworten der Kategorie "gut" grün hinterlegt würden, Antworten der Kategorie "mittel" gelb und Antworten der Kategorie "schlecht" rot.
Realisieren ließe sich so ein Fragebogen mit Dropdownlisten-Inhaltssteuerelementen, die Sie in eine Tabelle einfügen. Dann könnten Sie in Abhängigkeit von der Dropdownlistenauswahl die jeweilige Tabellenzelle grün, gelb oder rot einfärben. Eine eingebaute Funktion gibt es dafür allerdings nicht. Sie müssen mit VBA-Code nachhelfen.
Der Fragebogen lässt sich nach dem ersten Teil schon bequem mit Hilfe von Dropdownlistenfeldern beantworten. Sie müssen nur die Felder mit dem Text "Wählen Sie ein Element aus" anklicken und die gewünschte Antwort aus der Liste auswählen.
Damit die jeweilige Tabellenzelle nach Auswahl einer Antwort automatisch eingefärbt wird, fügen Sie VBA-Code hinzu:
- Drücken Sie Alt + F11, um in die Entwicklungsumgebung von Word zu wechseln.
- Aktivieren Sie mit Strg + R den Projekt-Explorer und suchen Sie darin den Projektzweig des Dokuments mit dem Fragebogen - erkennbar am Dateinamen.
- Öffnen Sie den Projektzweig sowie die untergeordnete Ebene "Microsoft Word Objekte" und doppelklicken Sie dann auf den Eintrag "ThisDocument".
- Auf diese Weise öffnen Sie das zugehörige Codefenster, in das Sie folgenden VBA-Code eingeben:
Private Sub Document_ContentControlOnExit( _
ByVal ContentControl As ContentControl, _
Cancel As Boolean)
ContentControl.Range.Cells(1).Shading _
.BackgroundPatternColor = _
GetCellColor(ContentControl)
End Sub
Private Function GetCellColor( _
cc As ContentControl) _
As Long
Dim ccListEntry As ContentControlListEntry
Dim strTextValue As String
Dim lngResult As Long
strTextValue = ""
For Each ccListEntry In cc.DropdownListEntries
If ccListEntry.Text = cc.Range.Text Then
strTextValue = ccListEntry.Value
Exit For
End If
Next
Select Case strTextValue
Case "1"
lngResult = wdColorLightGreen
Case "2"
lngResult = wdColorYellow
Case "3"
lngResult = wdColorLightOrange
Case Else
lngResult = wdColorAutomatic
End Select
GetCellColor = lngResult
End Function
- Verlassen Sie die Entwicklungsumgebung per Datei-Schließen und zurück zu Microsoft Word.
Sie können das Dokument jetzt speichern. Beachten Sie aber, dass Sie es jetzt als "Word Dokument mit Makros (*.docm)" speichern müssen. DOCX-Dateien können keinen VBA-Code enthalten.
Ansonsten erhalten Sie durch den VBA-Code den gewünschten Farbeffekt: Sobald Sie in den Dropdownlisten eine Antwort auswählen und zum nächsten Feld gehen, wird die jeweilige Tabellenzelle je nach Antwortkategorie grün, gelb oder orange eingefärbt.
Das Ganze funktioniert mit Hilfe der Ereignisprozedur "ContentControlOnExit", die automatisch beim Verlassen eines Inhaltssteuerelements ausgeführt wird. Die Prozedur setzt die Hintergrundfarbe der Tabellenzelle, in der sich das Steuerelement befindet.
Die Farbe wird durch die benutzerdefinierte Funktion "GetCellColor" bestimmt. Dabei prüft die Funktion zuerst in einer For Each-Next-Schleife, welcher Anzeigetext im Dropdownlistenfeld ausgewählt ist. Zum gefundenen Eintrag wird der zugeordnete Wert ermittelt, der laut unserer obigen Anleitung entweder 1, 2 oder 3 ist.
Somit kann in einem Select-Case-Ausdruck die passende Farbe bestimmt werden - zum Beispiel "wdColorLightGreen" (helles Grün) für eine Dropdownlistenauswahl mit dem Wert 1.