Roter Rand bei aktiviertem Filter

Mithilfe des Auswahlfilters können Sie die Datensätze eines Formulars gemäß dem Inhalt des aktuellen Feldes filtern. Befinden Sie sich also beispielsweise im Formular „Kunden“ der Beispieldatenbank „Nordwind“ im Feld „Land“ mit der Einstellung „Frankreich“ und aktivieren den auswahlbasierten Filter, werden beispielsweise nur noch die Datensätze angezeigt, bei denen „Land“ auf „Frankreich“ eingestellt ist. Nachdem Sie einige Zeit in den Datensätzen geblättert und Änderungen vorgenommen haben, ist allerdings schnell vergessen, nach welchem Feld die Filterung ursprünglich erfolgte.

Um eine kleine Gedächtnisstütze zu realisieren, können Sie das Feld, auf dessen Basis die Filterung erfolgte, farblich hervorheben, in dem zum Beispiel die Rahmenfarbe auf „Rot“ eingestellt wird. Für diesen Zweck können Sie die Ereignisprozedur „Bei angewendetem Filter“ (VBA: „ApplyFilter“) nutzen, die Access bei Aktivierung und Deaktivierung eines Filters aufruft (siehe nachfolgendes Listing oben auf dieser Seite). Der Parameter „ApplyType“ gibt Auskunft darüber, ob ein Filter aktiviert („acApply- Filter“, Wert = 1) oder deaktiviert („ac – Show AllRecords“, Wert = 0) wurde. Ist der Filter eingeschaltet, ermitteln wir über „Screen.ActiveControl“ das aktuelle Steuerelement und setzen dessen Rahmenfarbe auf „Rot“. Anschließend wird in einer Schleife über alle Steuerelemente des Formulars die Rahmenfarbe der restlichen Steuerelemente auf „Standard“ zurückgesetzt. Öffnen Sie dann das Formular „Kunden“ und kopieren Sie die Ereignisprozedur „ApplyFilter“ des Formulars in die Zwischenablage.

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Dim ctl As Control, strField As String

On Error Resume Next
If ApplyType = acApplyFilter Then ‚Filterfeld hervorheben
strField = Screen.ActiveControl.Name
Me(strField).BorderColor = vbRed
End If

For Each ctl In Me.Controls ‚Alle anderen zurücksetzen
Select Case TypeName(ctl)
Case „TextBox“, „Combobox“
If ctl.Name <> strField Then
ctl.BorderColor = 8421504
End If
End Select
Next ctl

End Sub

Dann öffnen Sie Ihre Datenbank und dort das Formular, in dem die Lösung eingesetzt werden soll, und fügen die Ereignisprozedur per Strg + V in den allgemeinen Teil des Formularmoduls ein.