Hi Galaxydriver,
mit folgendem Code tust Du nun alle möglichen Fehler von vornherein ausschließen.[color=green]' Diese Methode aktiviert den Excel-Autofilter
Sub Autofilter_Activate()
Dim Zelle As Range
[color=green]' prüft, ob eine Arbeitsmappe aktiv ist, wenn nicht
[color=green]' wird eine Meldung ausgegeben und der SUB verlassen
If ActiveWindow Is Nothing Then
MsgBox "Autofilter-Funktionen können nur in Arbeitsmappen verwendet werden!"
Exit Sub
End If
[color=green]' prüft, ob die aktive Arbeitmappe minimiert ist, wenn ja
[color=green]' wird eine Meldung ausgegeben und der SUB verlassen
If ActiveWindow.WindowState = xlMinimized Then
MsgBox "Autofilter-Funktionen können nur in sichtbaren und nicht" & _
"minimierten Arbeitsmappen verwendet werden!"
Exit Sub
End If
[color=green]' prüft, das aktuelle Arbeitsblatt ein Tabellenblatt ist,
[color=green]' wenn nicht wird eine Meldung ausgegeben und der SUB
' verlassen
If ActiveSheet.Type <> xlWorksheet Then
MsgBox "Autofilter-Funktionen sind nur in Tabellenblättern möglich.!"
Exit Sub
End If
[color=green]' prüft, ob der Inhalt des aktuellen Arbeitsblattes
[color=green]' geschützt wurde, wenn ja wird eine Meldung ausgegeben
[color=green]' und der SUB verlassen
If ActiveSheet.ProtectContents Then
MsgBox "Der Inhalt der Arbeitsblattes ist geschützt. Die" & _
"Autofilter-Funktionen kann nicht ausgeführt werden!"
Exit Sub
End If
[color=green]' prüft, ob bereits ein Autofilter auf dem aktuellen
[color=green]' Arbeitsblatt aktiv ist, wenn ja wird eine Meldung
[color=green]' ausgegeben und der SUB verlassen
If ActiveSheet.AutoFilterMode Then
MsgBox "Sie dürfen pro Blatt maximal 1 Autofilter aktiviert!"
Exit Sub
End If
[color=green]' prüft, ob die Markierung ein Zellenbereich ist, wenn
' nicht
[color=green]' wird eine Meldung ausgegeben und der SUB verlassen
If TypeName(Selection) <> "Range" Then
MsgBox "Bitte markieren Sie einen Zellenbereich!"
Exit Sub
End If
[color=green]' prüft, ob eine Mehrfach-Markierung vorhanden ist, wenn
' nicht
[color=green]' wird eine Meldung ausgegeben und der SUB verlassen
If Selection.Areas.Count > 1 Then
MsgBox "Wählen Sie bitte nur einen Bereich aus!"
Exit Sub
End If
[color=green] ' prüft, ob die markierten Zellen Werte enthalten,
[color=green]' sobald eine Zelle nicht leer ist, wird der
[color=green]' Autofilter aktiviert und der SUB verlassen
For Each Zelle In Selection
If IsEmpty(Zelle) = False Then
Selection.AutoFilter
Exit Sub
End If
Next Zelle
[color=green]' sämtliche markierte Zellen sind leer --> Meldung
MsgBox "Bitte Bereich markieren und Daten eingeben!"
End Sub
[color=green]' Diese Methode schaltet den Excel-Autofilter wieder ab
Sub Autofilter_Deactivate()
[color=green]' prüft, ob eine Arbeitsmappe aktiv ist, wenn nicht
[color=green]' wird eine Meldung ausgegeben und der SUB verlassen
If ActiveWindow Is Nothing Then
MsgBox "Autofilter-Funktionen können nur in Arbeitsmappen verwendet werden!"
Exit Sub
End If
[color=green]' prüft, ob die aktive Arbeitmappe minimiert ist, wenn ja
[color=green]' wird eine Meldung ausgegeben und der SUB verlassen
If ActiveWindow.WindowState = xlMinimized Then
MsgBox "Autofilter-Funktionen können nur in sichtbaren und nicht" & _
"minimierten Arbeitsmappen verwendet werden!"
Exit Sub
End If
[color=green]' prüft, das aktuelle Arbeitsblatt ein Tabellenblatt ist,
[color=green]' wenn nicht wird eine Meldung ausgegeben und der SUB
' verlassen
If ActiveSheet.Type <> xlWorksheet Then
MsgBox "Autofilter-Funktionen sind nur in Tabellenblättern möglich.!"
Exit Sub
End If
[color=green]' prüft, ob der Inhalt des aktuellen Arbeitsblattes
[color=green]' geschützt wurde, wenn ja wird eine Meldung ausgegeben
[color=green]' und der SUB verlassen
If ActiveSheet.ProtectContents Then
MsgBox "Der Inhalt der Arbeitsblattes ist geschützt. Die" & _
"Autofilter-Funktionen kann nicht ausgeführt werden!"
Exit Sub
End If
[color=green]' prüft, ob ein Autofilter aktiv ist, wenn nicht
[color=green]' wird eine Meldung ausgegeben und der SUB verlassen
If ActiveSheet.AutoFilterMode = False Then
MsgBox "Kein Autofilter aktiviert!"
Exit Sub
End If
[color=green]' Autofilter deaktivieren
ActiveSheet.Cells.AutoFilter
End Sub Viel Spass,
R@lf |