Checkbox farblich hinterlegen (Word 2003)

Hallo,

ich habe in MS Word 2003 eine Zeile mit drei Spalten drei Checkboxen
über „Ansicht > Symbolleisten > Steuerelement-Toolbox“ eingefügt,
d.h. in jeder Spalte eine.

Die Checkboxen heißen „erledigt“, „teilweise erledigt“ und „nicht
erledigt“.

Meine Idee ist, wenn ich eine dieser Checkboxen anklicke soll die
gesamte Zeile eine zugeordnete Farbe erhalten (grün, gelb oder rot).
Wenn das nicht möglich ist und nur die jeweilige Spalte beim
anklicken die zugeordnete Farbe erhält ist es auch ok.

Vielleicht noch eine Info am Rande, ich habe leider überhaupt keine
Ahnung von Makros o.ä.

Kann mir einer helfen?

Vielen Dank im Voraus.

Grüße,
Alex

Hallo Alex,

ich habe in MS Word 2003 eine Zeile mit drei Spalten drei Checkboxen über „Ansicht > Symbolleisten > Steuerelement-Toolbox“ eingefügt, d.h. in jeder Spalte eine. Die Checkboxen heißen „erledigt“, „teilweise erledigt“ und „nicht erledigt“.
Meine Idee ist, wenn ich eine dieser Checkboxen anklicke soll die gesamte Zeile eine zugeordnete Farbe erhalten (grün, gelb oder rot). Wenn das nicht möglich ist und nur die jeweilige Spalte beim anklicken die zugeordnete Farbe erhält ist es auch ok.

Das Einfärben der Zeilen ist relativ aufwendig, da die drei Checkboxen immer die Hintergrundfarbe des vorigen Zustands behalten. Es geht, aber es ist nicht der sauberste Code.

  • Rechtsklick auf eine der drei Checkboxen

  • Code anzeigen. Die Programmierumgebung öffnet sich und es steht so 'was drin wie

    Option Explicit

    Private Sub CheckBox1_Click()
    End Sub

  • Bis auf „Option Explicit“ das bitte weglöschen.

  • Nachstehenden Code einfügen:


    Private Sub CheckBox1_Click()
    With Me.CheckBox1
    If .Value = True Then
    Selection.Range.Tables(1).Rows(1).Shading.BackgroundPatternColor = vbRed
    .BackColor = vbRed
    Me.CheckBox2.Value = False
    Me.CheckBox2.BackColor = vbRed
    Me.CheckBox3.Value = False
    Me.CheckBox3.BackColor = vbRed
    End If '.Value
    End With 'Me.CheckBox1
    End Sub 'CheckBox1_Click

    Private Sub CheckBox2_Click()
    With Me.CheckBox2
    If .Value = True Then
    Selection.Range.Tables(1).Rows(1).Shading.BackgroundPatternColor = vbYellow
    .BackColor = vbYellow
    Me.CheckBox1.Value = False
    Me.CheckBox1.BackColor = vbYellow
    Me.CheckBox3.Value = False
    Me.CheckBox3.BackColor = vbYellow
    End If '.Value
    End With 'Me.CheckBox2
    End Sub 'CheckBox2_Click

    Private Sub CheckBox3_Click()
    With Me.CheckBox3
    If .Value = True Then
    Selection.Range.Tables(1).Rows(1).Shading.BackgroundPatternColor = vbGreen
    .BackColor = vbGreen
    Me.CheckBox1.Value = False
    Me.CheckBox1.BackColor = vbGreen
    Me.CheckBox2.Value = False
    Me.CheckBox2.BackColor = vbGreen
    End If '.Value
    End With 'Me.CheckBox3
    End Sub 'CheckBox3_Click

Das sollte’s gewesen sein.

HTH.

Markus
___________________
Und Sterne sammel ich noch immer…

Hallo Markus,

leider funktioniert das nicht. Unter „Code anzeigen“ erscheint bei mir nur

Private Sub OptionButton1_Click()

End Sub

„Option Explicit“ kann ich nicht finden. Ich habe Deinen Text einmal mit und einmal ohne „Option Explicit“ eingefügt. Leider ohne Erfolg.

Was mache ich falsch?

Grüße,
Alex

Hallo Alex,

leider funktioniert das nicht. Unter „Code anzeigen“ erscheint
bei mir nur

Private Sub OptionButton1_Click()

Dann hast du keine Checkbox sondern einen OptionButton.
Die sind beide unterschiedlich zu behandeln.
In der Symbolleiste heißt das Kontrollkästchen bzw. Optionsfeld.
Sichtbar, wenn du mit der Maus langsam über die Symbole der Symbolleiste fährst.

„Option Explicit“ kann ich nicht finden. Ich habe Deinen Text
einmal mit und einmal ohne „Option Explicit“ eingefügt. Leider
ohne Erfolg.

Option Explicit ist sehr wichtig wenn du öfters programmieren willst.
Hat aber direkt mit deiner Problematik rein gar nix zu tun.
Wenn dein Problem gelöst wird frag hier nach was es mit Option Explicit auf sich hat und warum es sehr gut ist es zu benutzen.

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für den Tipp. Ich habe daraus checkboxen gemacht und dann funktioniert der Lösungsansatz von Markus auch. Zum Glück komme ich nicht sooft in den Genuss zu programmieren, dass ist ein Buch mit sieben Siegeln, obwohl es sehr spannend ist.

@Markus, vielen Dank nochmal.

Euch einen schönen Tag.

Viele Grüße,
Alex

Hallo Alex,

vielen Dank für den Tipp. Ich habe daraus checkboxen gemacht und dann funktioniert der Lösungsansatz von Markus auch.

Wenn Dir OptionButtons besser gefallen, laß sie doch. Ich finde die auch passender. Auch Microsoft hat bei der Entwicklung von MS Forms die OptionButtons dafür vorgesehen, aus mehren Vorgaben genau eine auszuwählen (das habe ich aus sachlichen Gründen in meinen Code reinprogrammiert). Die Checkboxen sind dafür gedacht, mehrere Vorgaben auswählen zu können. (Leider verwässert Microsoft selbst des öfteren dieses Prinzip).

Wenn Du OptionButton haben willst, mußt Du meinen Code anpassen. Ich schicke mal, weil ich gerade in Schreiblaune bin, eine Erläuterung vorweg.

Der Code besteht aus Prozeduren. Das sind Programmschnipsel, die irgendwie aufgerufen werden, als Makro oder durch den Klick auf den OptionButton.

Man erkennt die Schnipsel an den Schlüsselwörtern Sub und End Sub (Private Sub bedeutet, daß Du den Schnipsel nicht in der Makroliste in Word siehst).

Wenn die Schnipsel von einem OptionButton aufgerufen werden sollen, müssen sie einen bestimmten Namen tragen. Das ist der Name des Elements, das den Schnipsel aufruft (also der OptionButton), ein Unterstrich und welche Aktion auf dem Element den Aufruf auslösen darf (ein Klick).
Hier liegt die Lösung für die Umwandlung von CheckBoxen in OptionButtons. Im wesentlichen änderst Du den Namen der drei Schnipsel ab, und schon geht’s auch mit OptionButtons.

  1. in Word:
    Lösche die drei CheckBoxen weg. Füge wieder drei OptionButtons ein.

  2. im VBA-Code:
    Bearbeiten > Ersetzen

  • Suchen nach „CheckBox“ (ohne Anführungszeichen)
  • Ersetzen durch „OptionButton“ (ohne Anführungszeichen)
  • Suchen in: ganzes Modul
    Der Suchbegriff sollte sechs Mal ersetzt worden sein (drei Mal im Namen und drei Mal nach End Sub).

Das sollte es gewesen sein.

Zum Glück komme ich nicht sooft in den Genuss zu programmieren, das ist ein Buch mit sieben Siegeln, obwohl es sehr spannend ist.

Programmieren ist für mich wie Kreuzworträtsel lösen. Man hat ein Problem und sucht nach einer Lösung. Man bewegt sich da in festen Rahmen, nämlich der Programmiersprache, und man kann immer dazulernen.

@Markus, vielen Dank nochmal.

Bitte, gerne geschehen. Dir einen schönen Tag.

Viele Grüße,

Markus