Φαίνεται ότι οι παλαιότερες μακροεντολές δεν λειτουργούν. Έχω ρυθμίσει την κατάλληλη ασφάλεια για την εκτέλεση μακροεντολών VBA, αλλά όταν έχω δοκιμάσει μερικές μεθόδους για την εκκαθάριση ΟΛΩΝ των φίλτρων σε ένα φύλλο εργασίας, λαμβάνω ένα σφάλμα μεταγλώττισης.
Ακολουθούν οι δοκιμές που έκανα:
Έχω κουμπιά στα φύλλα για να καθαρίζω όλα τα φίλτρα για ευκολία χρήσης για τους χρήστες, αφού τα φύλλα έχουν πολλές στήλες που έχουν φίλτρα πάνω τους.
Εάν το φύλλο έχει ήδη ένα φίλτρο τότε:
Sub Macro1()
Cells.AutoFilter
End Sub
θα το αφαιρέσει.
Δοκιμάστε κάτι τέτοιο:
Sub ClearDataFilters()
'Clears filters on the activesheet. Will not clear filters if the sheet is protected.
On Error GoTo Protection
If ActiveWorkbook.ActiveSheet.FilterMode Or _
ActiveWorkbook.ActiveSheet.AutoFilterMode Then _
ActiveWorkbook.ActiveSheet.ShowAllData
Exit Sub
Protection:
If Err.Number = 1004 And Err.Description = _
"ShowAllData method of Worksheet class failed" Then
MsgBox "Unable to Clear Filters. This could be due to protection on the sheet.", _
vbInformation
End If
End Sub
Το .FilterMode
επιστρέφει true αν το φύλλο εργασίας βρίσκεται σε λειτουργία φίλτρου. (Δείτε αυτό για περισσότερες πληροφορίες.)
Δείτε αυτό για περισσότερες πληροφορίες σχετικά με το .AutoFilter
.
Και τέλος, this θα παρέχει περισσότερες πληροφορίες σχετικά με τη μέθοδο .ShowAllData
.