# VBA Access Formular: Bedingte Formatierung mit VBA



## Fuchsei (26. Oktober 2011)

Hi, 

ich hätte ein kleines Problem: Ich habe ein Kontrollkästchen hinter jedem Datensatz stehen, 

wenn man das Kontrollkästchen anklickt, also einen Hacken reinsetzt. Soll der ganze Datensatz einen bestimmten Rahmen oder vielmehr eine bestimme Rahmenfarbe bekommen. 

Funktioniert das überhaupt? Wenn ja, wie würde das in VBA formuliert aussehen? 

Danke schon im Voraus

VG
Fuchsei


----------



## tombe (26. Oktober 2011)

Der Datensatz soll einen Rahmen bekommen.

Soll beim Anzeigen ein Rahmen dargestellt werden oder wie meinst du das? Wird der "Inhalt" des Kontrollkästchens zusammen mit den anderen Daten gespeichert?


----------



## Fuchsei (26. Oktober 2011)

Also soll jedes Feld im Datensatz einen blauen Rahmen bekommen, wenn dieses Kästchen angehakt ist. 
Der Inhalt wird gespeichert, ja. Und der blaue Rahmen soll dann natürlich auch bleiben. Falls der Haken wieder rausgenommen wird soll aber auch wieder zur Ursprungsrahmenfarbe rot zurückgegangen werden.


----------



## tombe (26. Oktober 2011)

Versuche mal das hier:


```
Private Sub check_Click()
    rahmen
End Sub

Private Sub Form_Current()
    rahmen
End Sub

Sub rahmen()

Dim txt As Control

Dim rot
rot = RGB(255, 0, 0)
Dim schwarz
schwarz = RGB(0, 0, 0)

If check.Value = True Then
    For Each txt In Me.Controls
        If TypeOf txt Is TextBox Then
            txt.BorderColor = rot
        End If
    Next
Else
    For Each txt In Me.Controls
        If TypeOf txt Is TextBox Then
            txt.BorderColor = schwarz
        End If
    Next
End If

End Sub
```

Damit die Rahmenfarbe geändert wird, muss der Rahmentyp auf FLACH gestellt werden!

Ich habe im Beispiel eine Checkbox mit Namen "check" und den Code musst du einmal in das Click-Ereignis der Checkbox und dann noch ins das Current-Ereignis der Form damit beim Wechseln der Code ebenfalls ausgeführt wird.


----------



## Fuchsei (26. Oktober 2011)

Ok, die Lösung funktioniert an sich nur nicht ganz richtig, wie ich das gemeint habe. Beim Klicken in die Checkbox wird alles mit einer anderen Rahmenfarbe versehen. 
Außerdem ist auf einmal in jedem Kontrollkästchen ein Haken.
Vll hab ich mich auch mit denn Begrifflichkeiten vertan. Ich hab ein Suchformular in tabellarischer Form, nach dem Suchen werden mir die Datensätze praktisch in Zeilen untereinander angezeigt. Hinter jeder Zeile ist ein Kontrollkästchen, das soll angeklickt werden und dann nur der Rahmen der Zeile in der das Kontrollkästchen ist  mit einer anderen Farbe versehen werden. Oder hab ich einen Fehler in der Integration des Codes gemacht? Ich hab aber eig genau das selbe getan wie in deiner Anleitung vorzufinden?

Danke für die schnellen Antworten


----------



## tombe (26. Oktober 2011)

Ok, jetzt verstehe ich was du machen willst denke aber nicht das es sich so lösen lässt.

Für Access gibt es jedes Feld/jeden Rahmen nur einmal, deshalb werden dann auch immer alle Farben gleichzeitig geändert.

Es gibt aber ab Access 2000 eine Möglichkeit die dir zumindest einen "Teilerfolg" bringen könnte.

Markiere in der Entwurfsansicht eines der Textfelder und klicke dann auf Format -> Bedingte Formatierung.

Dort wählst du bei Bedingung "Ausdruck ist" aus und gibst in das Feld daneben "[name_der_checkbox].[Wert]" ein (das Wort "Wert" so eingeben und für "name_der_checkbox" natürlich den Namen deines Feldes).

Jetzt kannst du noch z.B. als Hintergrundfarbe die Farbe Rot auswählen und fertig.

Jetzt wird bei diesem Feld der Hintergrund automatisch auf rot geänder so bald du die Checkbox markierst und das ohne eine Zeile Code.


----------

