
20-06-11, 10:50
|
 | Διαχειριστής Όνομα: Τάσος Φιλοξενιδης Έκδοση λογισμικού Office: Ms-Office 365 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική | | Εγγραφή: 21-10-2009
Μηνύματα: 2.035
| |
Καλημέρα Νίκο!
Ο κώδικας που αναφέρεις είναι σωστός και προφανώς σε εξυπηρετεί.
Αν όμως υποτεθεί ότι υπάρχουν δεδομένα εκτός περιοχής φίλτρου αυτά θα διαγραφούν αν δεν περιορίσεις την περιοχή προς διαγραφή στα πλαίσια του φίλτρου.
Σε τέτοιες περιπτώσεις δεν εξυπηρετεί το "UsedRange".
Θα πρέπει να χρησιμοποιηθεί το " AutoFilter.Range"
Για παράδειγμα: Κώδικας: Sub test()
Dim rng As Range
Sheet1.Range("$A$2:$K$100").AutoFilter Field:=6, Criteria1:="o" ' Sheet1 = Το κωδικό όνομα του φύλλου
Set rng = Sheet1.AutoFilter.Range
Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1, 1)
'δημιουργεί μια περιοχή από την δεύτερη γραμμή του φίλτρου μέχρι την τελευταία.
If rng.Count > 0 Then rng.SpecialCells(xlCellTypeVisible).EntireRow.Delete
'Αν δεν υπάρχουν ορατά κελιά στη φιλτράρισμένη περιοχή "rng", η SpecialCells() θα επιστρέψει σφάλμα.
Set rng = Nothing
End Sub
Φιλικά
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |