ich stehe vor einem wahrscheinlich kleinen Problem, zu dem mir aber die verschiedenen Möglichkeiten der VBA Funktionen fehlen:
Einfach erklärt:
Durch Eingabe eines Wertes in genau einer Zelle wird eine Tabelle gefiltert.
Wird dieser Wert aus der Zelle wieder gelöscht, wird auch der Filter zurückgesetzt.
Bisher habe ich es so umgesetzt:
Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Worksheets("20FT").Range("X2")
If WorksheetFunction.CountA(KeyCells) = 1 Then
Sheets("20FT").Select
ActiveSheet.ListObjects("t_20FT").Range.AutoFilter Field:=18, Criteria1:= _
"0", Operator:=xlAnd
Else
If WorksheetFunction.CountA(KeyCells) = 0 Then
Sheets("20FT").Select
ActiveSheet.ListObjects("t_20FT").Range.AutoFilter Field:=18
End If
End If
End Sub
Damit in der Datei keine manuell eingetragenen Werte in den nicht gesperrten Zellen gespeichert werden, leere ich diese Bereiche bei Workbook_BeforeSave.Das Problem hierbei ist nun, dass der zweite Teil des Codes bei jeder Änderung (also auch bei der Leerung der o.g. Bereiche) anderer Zellen ausgeführt wird, da das ChangeEvent die "Filterzelle" prüft, diese leer ist (also CountA = 0) und demnach der Code ausgeführt wird.
Wie kann ich das ChangeEvent einschränken auf "prüfe nur auf Änderungen in der "FilterZelle"?
Und falls das nicht geht, über welche Alternative könnte ich dieses Problem abfangen?
Vielen Dank für Eure Ideen und
Gruß
dEllE