Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Autofilter excel 2002 και διαφορές με 2007?
Καλημέρα παιδιά, θα χρειαστώ για άλλη μια φορά τη βοήθεια σας. Έχω φτιάξει κάποιες μακροεντολές σε excel 2002 SP3 και δουλεύουν μια χαρά. Όταν πήγα όμως να τις τρέξω σε 2007 αντιμετώπισα το εξής πρόβλημα. Χρησιμοποιώ τον παρακάτω κώδικα για να σβήσω γραμμές, που σε μια στήλη τους έχουν το "ο" (=όχι") Κώδικας: With Sheets(1) LastRow = .Range("C3").End(xlDown).Row 'Έυρεση τελευταίας γραμμής με περιεχόμενο .Range("C3:C" & LastRow).EntireRow.Select End With Selection.Sort Key1:=Range("F3"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Rows("2:2").Select 'Η τίτλοι των στηλών είναι στην γραμμή 2 Selection.AutoFilter Selection.AutoFilter Field:=6, Criteria1:="o" 'Το κριτήριο μου είναι στην στήλη 6 With Sheets(1) LastRow = .Range("a3").End(xlDown).Row 'Επιλογή των γραμμών προς διαγραφή .Range("a3:a" & LastRow).EntireRow.Select End With Selection.Delete Shift:=xlUp 'Διαγραφή γραμμών Selection.AutoFilter Field:=6 'Επαναφορά φίλτρου Selection.AutoFilter 'Αφαίρεση φίλτρου Range("A1").Select Υπάρχει κάποιος τρόπος επιλογής μόνο όσων φαίνονται στο φίλτρο ή να τις σβήσω με άλλον τρόπο? (πχ με κάποια if ελέγχοντας όλες τις γραμμές μια μια)... Ευχαριστώ! |
#2
| |||
| |||
Το βρήκα μάλλον παιδιά! Κώδικας: Rows("2:2").Select Selection.AutoFilter Selection.AutoFilter Field:=6, Criteria1:="o" Application.DisplayAlerts = False ActiveSheet.UsedRange.Offset(2, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1, 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete Application.DisplayAlerts = True |
#3
| ||||
| ||||
Καλημέρα Νίκο! Ο κώδικας που αναφέρεις είναι σωστός και προφανώς σε εξυπηρετεί. Αν όμως υποτεθεί ότι υπάρχουν δεδομένα εκτός περιοχής φίλτρου αυτά θα διαγραφούν αν δεν περιορίσεις την περιοχή προς διαγραφή στα πλαίσια του φίλτρου. Σε τέτοιες περιπτώσεις δεν εξυπηρετεί το "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 Ανάπτυξη επαγγελματικών εφαρμογών |
#4
| |||
| |||
Α, άψογο! Στην ουσία αυτό ήθελα, επιλογή μόνο των τιμών του AutoFilter και προφανώς το AutoFilter.Range είναι πιο ασφαλές! Σ'ευχαριστώ πάρα πολύ Τάσο! |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Excel07] Διπλότυπα σε αναδυόμενη λίστα στο excel 2007 | vasilis999 | Excel - Ερωτήσεις / Απαντήσεις | 6 | 06-11-15 10:08 |
[Γενικά] Συμβατότητα από excel 2007 σε excel 2013 | gfevran | Excel - Ερωτήσεις / Απαντήσεις | 2 | 12-04-14 11:01 |
Mετατροπή βάσης απο 2007 σε 2003,2002 κλπ | alex | Access - Ερωτήσεις / Απαντήσεις | 2 | 23-10-11 18:32 |
[ Ερωτήματα ] Διαφορές μεταξύ Excel και Access SOS | xristos0718 | Access - Ερωτήσεις / Απαντήσεις | 5 | 10-03-10 13:42 |
Αντιγραφή / μεταφορά δεδομένων Access 2007 σε Excel 2007 | Galileo | Ms-Office | 8 | 27-01-10 23:23 |
Η ώρα είναι 18:59.