ich setze mit diesem Macro
'---------------------------------------------------------------------
On Error Resume Next
Dim af
With Application
''.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
Dim s
s = ActiveCell.Column
'leere abhaken im filter
ActiveSheet.Range("$A$40:$NM$40").AutoFilter Field:=s, Criteria1:=Array("*U*"), Operator:=xlFilterValues
'With Application
' ''.Calculation = xlCalculationManual
' .EnableEvents = True
' .ScreenUpd
End with
'--------------------------------------------------------------------------------------------------------------------
einen Autofilter. Aktiviert wird dieser mit diesen Macro:
'---------------------------------------------------------------------------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng2 As Range With Application .ScreenUpdating = True .EnableEvents = True '.Calculation = xlCalculationAutomatic End With If Not Intersect(Target, Range("a43:nn43")) Is Nothing Then Call Urlauber_anzeigen2 If Not Intersect(Target, Range("a42:nn42")) Is Nothing Then Call filter_raus With Application .ScreenUpdating = True .EnableEvents = True .Calculation = xlCalculationAutomatic End With End Sub'--------------------------------------------------------------------------------------------------------------------------------------------
Mich stört jetzt das ich jeweils zum aktivieren ( die Zeile 43 ) und zum deaktivieren die Zeile 42 benutzen muss.
Gern würde ich nur die Zeile 43 benutzen.
So zu sagen:
bei klick in Zelle z43:
- prüfe ob hier schon ein Filter aktiviert ist und falls nicht aktiviere diesen und umgekehrt genauso.
einen Ansatz habe ich schon gefunden. Aber da ich oberhalb der zeile 43 Zeilen ein paar Zeilen ausgeblendet sind, funktioniert dies noch nicht richtig
Dim s
s = ActiveCell.Column
If ActiveSheet.AutoFilterMode Then
If Columns(s).SpecialCells(xlCellTypeVisible).Count = Rows.count Then
ActiveSheet.Range("$A$40:$NM$40").AutoFilter Field:=s, Criteria1:=Array("*U*"), Operator:=xlFilterValues
MsgBox "kein Autofilterkriterium gesetzt"
Else
ActiveSheet.Range("$A$40:$NM$40").AutoFilter Field:=s
MsgBox "Filterung aktiv"
End If
End If
Kann man dieses row.count umschreiben das es erst ab Zeile 43 prüft?
Rows("42:200") funktioniert einfach nicht.
Kann mir dabei jemand helfen?
mfg thomas