Εμφάνιση ενός μόνο μηνύματος
  #3  
Παλιά 20-06-11, 10:50
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού 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
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση