Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] Αυτόματο Φίλτρο Χωρίς DropDown menu

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 07-07-11, 19:46
mak Ο χρήστης mak δεν είναι συνδεδεμένος
Όνομα: Μανώλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 15-05-2011
Περιοχή: ΗΡΑΚΛΕΙΟ
Μηνύματα: 26
Προεπιλογή Αυτόματο Φίλτρο Χωρίς DropDown menu

Καλησπερα σε όλη την κοινοτητα του ms-office
Εχω ενα παραδειγμα στο επισυναπτομενο αρχειο test1.xls ιδιο και στα δυο φυλλα του βιβλιου.
Στο φυλλο 1 μεσα στο textbox πλητρολογεις το φιλτρο για το κελι C7 (Δρομολογια)
Στο φυλλο 2 μπορεις να πληκτρολογήσεις στο C6, τι θες ως φιλτρο.
(Στο φυλλο 2 επίσης μπορεις σε ολη τη σειρα 6 να πληκτρολογεις φιλτρα για τα πεδια της σειρας 7. Δοκιμαστε στο Β6 να πληκτρολογησετε μ* )
Και τους δυο κωδικες VBA για φιλτρα χωρις dropdown menu, τους εχω βρει στο διαδίκτυο.
Η ερωτηση μου ειναι :
Εχω μια εφαρμογη σε ενα βιβλιο, με 4 φυλλα, με δεδομενα.
Και στα τεσσερα φυλλα, υπαρχει κοινο το πεδιο Δρομολογιο.
Θελω να φιλτράρω τις εγγραφες μου ως προς το Δρομολογιο (π.χ. 1) αλλα και στα τεσσερα φυλλα.
Μεχρι στιγμης το κανω με 4 textbox (1 σε καθε φυλλο) και πληκτρολογω το 1 σε καθε ένα (χρησιμοποιω δηλαδη το παραδειγμα Φυλλο 1 απο test1.xls)
Υπαρχει τροπος με VBA να διδω το δρομολογιο 1 σε καποιο φυλλο και να φλιτραρει 1 και στα 4 φυλλα ?
Συνημμένα Αρχεία
Τύπος Αρχείου: xls test1.xls (36,0 KB, 36 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 07-07-11, 23:21
Όνομα: Φώτης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-11-2009
Μηνύματα: 22
Προεπιλογή Σπαζοκεφαλιά : ενώ όλα είναι ίδια … Γιατί δεν κάνει αναζήτηση στα νούμερα;

Εδώ σας επισυνάπτω ένα αρχείο που όπως λέει και ο τίτλος είναι σπαζοκεφαλιά ..
Στην ουσία … στο συγκεκριμένο αρχείο στο φύλλο “DATA” κάνω χρήση αυτού του φίλτρου για αναζήτηση διαφορών ονομάτων με απόλυτη επιτυχία , το πρόβλημα είναι όταν αντί για ονόματα έχω αριθμούς όπως την στήλη “Η” ΑΡ. ΤΙΜΟΛΟΓΙΟΥ ..Μπορεί να μου πει κάποιος γιατί γίνετε αυτό;
Συνημμένα Αρχεία
Τύπος Αρχείου: xls χρεωστικα πρακτοριων_2.1.xls (396,5 KB, 29 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 08-07-11, 00:08
mak Ο χρήστης mak δεν είναι συνδεδεμένος
Όνομα: Μανώλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 15-05-2011
Περιοχή: ΗΡΑΚΛΕΙΟ
Μηνύματα: 26
Προεπιλογή

Καλησπερα σε όλους

Αν καταλαβα καλα αυτο που θες .....
ριξε μια ματια στο αρχειο που στελνω αν ειναι αυτο που θες
Συνημμένα Αρχεία
Τύπος Αρχείου: xls χρεωστικα πρακτοριων_2.1_2.xls (392,5 KB, 30 εμφανίσεις)
Απάντηση με παράθεση
  #4  
Παλιά 08-07-11, 13:04
Xristos
Guest
 
Μηνύματα: n/a
Red face

Παιδιά γειά σας. Είδα τα συνημμένα και θα ήθελα να ρωτήσω πως το δημιουργήσατε την αναζήτηση γιατί με ενδιαφέρει να την κάνω σε κάποιο δικό μου έγγραφο ή είναι πιο εύκολο να στείλω συνημμένο το δικό μου έγγραφο και να μου δημιουργήσετε εσείς. Αν είναι εύκολο καλό θα είναι να μου πείτε τον τρόπο για να μπορώ να το δημιουργώ σε άλλα έγγραφα. Ευχαριστώ
Απάντηση με παράθεση
  #5  
Παλιά 08-07-11, 15:44
mak Ο χρήστης mak δεν είναι συνδεδεμένος
Όνομα: Μανώλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 15-05-2011
Περιοχή: ΗΡΑΚΛΕΙΟ
Μηνύματα: 26
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από maxtor10 Εμφάνιση μηνυμάτων
Εδώ σας επισυνάπτω ένα αρχείο που όπως λέει και ο τίτλος είναι σπαζοκεφαλιά ..
Στην ουσία … στο συγκεκριμένο αρχείο στο φύλλο “DATA” κάνω χρήση αυτού του φίλτρου για αναζήτηση διαφορών ονομάτων με απόλυτη επιτυχία , το πρόβλημα είναι όταν αντί για ονόματα έχω αριθμούς όπως την στήλη “Η” ΑΡ. ΤΙΜΟΛΟΓΙΟΥ ..Μπορεί να μου πει κάποιος γιατί γίνετε αυτό;
Ριξε μι ματια στο επυσυναπτομενο χρεωστικα πρακτοριων_2.1.3.xls
τωρα μπορει να βρει το αριθμο, αν τον πληκτρολογησεις όλον (π.χ. 351)
αλλα, το AVRA TOUR το βρισκει πληκτρολογοντας AV*
Ακριβως πως δουλευει δεν γνωριζω...
Οπως ειπα το βρήκα ετοιμο και απλα το χρησιμοποιησα !!
Συνημμένα Αρχεία
Τύπος Αρχείου: xls χρεωστικα πρακτοριων_2.1.3.xls (391,0 KB, 37 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 08-07-11, 17:46
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
Προεπιλογή

Καλησπέρα σας.
Θα ήθελα να σας πώ ότι στο Excel σε μια στήλη που περιέχει αριθμούς δεν μπορούμε να φιλτράρουμε με "Περιέχει ... ", διότι αυτό που υπάρχει στο κελί είναι αριθμός αποθηκευμένος σε δυαδική μορφή και όχι αριθμητικά ψηφία όπως εμφανίζεται και το βλέπουμε.
Το τέχνασμα λοιπόν είναι να μετατρέψουμε την στήλη των αριθμών σε αλφαριθμητικό σε μια βοηθητική στήλη και να φιλτράρουμε την βοηθητική στήλη.
Παράδειγμα:
Κώδικας:
ΣτήληΑ  ΣτήληΒ
Αριθμός aΑριθμός (ο τύπος είναι ="a"&a1)
 123,45 a123,45
  4.567 a4567
  12345 a12345
   1476 a1476
   1,70 a1,7
Αν θέλουμε να βρούμε τις γραμμές που περιέχουν τον αριθμό 7 θα πρέπει να φιλτράρουμε την στήλη Β και όχι την Α

Θανάσης
Απάντηση με παράθεση
  #7  
Παλιά 08-07-11, 18:25
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.030
Προεπιλογή

Καλησπέρα σε όλους!
Απευθύνομαι στο δημιουργό του θέματος τον Μανώλη.

Φίλε Μανώλη και εμείς είμαστε στο διαδίκτυο και νομίζω ότι τα καταφέρνουμε μια χαρά!

Στο θέμα μας λοιπόν.
Θέλεις να φιλτράρεις σε ένα φύλλο και ταυτόχρονα να φιλτράρονται και κάποια άλλα φύλλα που έχουν την ίδια δομή δεδομένων.

Βήμα 1:
Αφαιρείς το/τα TextΒox (προκαλούν αναταραχές στην οθόνη) και πληκτρολογείς το κριτήριο του αυτόματου φίλτρου στο κελί C6.
Αυτό ισχύει για όλα τα φύλλα που εμπλέκονται στην αναζήτηση και στο ταυτόχρονο φιλτράρισμα.

Βήμα 2:
Δημιουργείς ένα φύλλο (που αργότερα μπορείς να αποκρύψεις) με το κωδικό όνομα SheetList
που θα περιέχει το όνομα ArrSheets (Περιοχή A2:A10, μπορείς να το προσαρμόσεις στα μέτρα σου).
Στην περιοχή αυτή γράψε τα ονόματα των φύλλων που θα φιλτράρονται.

Βήμα 3:
Σε μια λειτουργική μονάδα πέρασε τον παρακάτω κώδικα:

Κώδικας:
Option Explicit
Public IsExecuting As Boolean
Dim c As Range, i As Integer

Sub ExecuteAllAutoFilters( _
    StartRange As String, _
    AutofilterField As Integer, _
    AutofilterCriteria As String, _
    ExcludedSheetName As String, _
    TargetAddress As String)

    For Each c In SheetList.Range("ArrSheets").SpecialCells(xlCellTypeConstants)
        With Parent.Worksheets(c.Text)
            If Not .Name = ExcludedSheetName Then
                If AutofilterCriteria = vbNullString Then
                    .AutoFilterMode = False
                Else
                    .Range(StartRange).AutoFilter Field:=AutofilterField, Criteria1:=AutofilterCriteria
                End If
                .Range(TargetAddress).Value = AutofilterCriteria
            End If
        End With
    Next
End Sub
Βήμα 4:

Στη λειτουργική μονάδα κλάσης του Βιβλίου (στο "ThisWorkBook", όχι των φύλλων) πέρασε τον παρακάτω κώδικα:
Κώδικας:
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If IsExecuting Then Exit Sub
    If Intersect(Target, Range("C6")) Is Nothing Then Exit Sub
    If SheetList.Range("ArrSheets").Find(Sh.Name) Is Nothing Then Exit Sub
    IsExecuting = True
    Range("A7:C7").AutoFilter Field:=3, Criteria1:=Target.Text
    ExecuteAllAutoFilters _
            StartRange:="A7:C7", _
            AutofilterField:=3, _
            AutofilterCriteria:=Target.Text, _
            ExcludedSheetName:=Sh.Name, _
            TargetAddress:=Target.Address
    If Trim(Target) = vbNullString Then Sh.AutoFilterMode = False
    IsExecuting = False
End Sub
Μπορείς να δεις την ακριβή λειτουργία των παραπάνω στο αρχείο που επισυνάπτω.

Καλή συνέχεια!

Φιλικά

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xls XL_Worksheets_AutoFilter.xls (66,5 KB, 84 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 09-07-11 στις 03:55. Αιτία: Βελτίωση κώδικα VBA
Απάντηση με παράθεση
  #8  
Παλιά 09-07-11, 09:47
mak Ο χρήστης mak δεν είναι συνδεδεμένος
Όνομα: Μανώλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 15-05-2011
Περιοχή: ΗΡΑΚΛΕΙΟ
Μηνύματα: 26
Προεπιλογή Καλημέρα σε όλους

Φιλε Τασο
κατ'αρχην να σε ευχαριστησω πολύ για το χρόνο σου...

Τωρα στο αρχειο που ανεβασες γινονται τα εξεις:
α. πληκτρολογεις στο 1ο φυλλο το κιτηριο π.χ. 1
β. ενεργοποιουνται τα βελακια του αυτοματου φιλτρου στις επικεφαλιδες (χωρις να φιλτραριστει τίποτα
γ. ξαναπληκτρολογεις στο c6 το κριτηριο και ok
δ. διαγραφεις το κριτηριο 1, απενεργοποιουνται τα βελακια
ε. πληκτρολογεις αλλο κριτηριο πχ 2 > ενεργοποιουνται τα βελακια (χωρις φιλτραρισμα)
στ.ξαναπληκτρολογεις στο c6 το κριτηριο και Βγαζει runtime error "H Μεθοδος AutoFilter της κλασης range απετυχε"

Και να ρωτησω και κατι "πως δημιουργεις φυλλο με κωδικο όνoμα Sheetlist" ?
Οπως καταλαβες ... εγω κόλλησα σε αυτό..!!!!
Φιλικα Μανώλης
Απάντηση με παράθεση
  #9  
Παλιά 09-07-11, 11:42
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.030
Προεπιλογή

Καλημέρα Μανώλη και ευχαριστώ για τις παρατηρήσεις!

Το πρόβλημα που περιγράφεις εμφανίζεται στην έκδοση Excel 2003.

Σε νεώτερες εκδόσεις λειτουργεί κανονικά.

Σήμερα που βρίσκομαι σε υπολογιστή με Office 2003 μπόρεσα να αναπαράγω το σφάλμα που περιγράφεις και προτείνω τα εξής:

Στο συμβάν Workbook_SheetChange

Άλλαξε το Range("A7:C7") με το Range("A7:C" & Rows.Count)

Επίσης άλλαξε το StartRange:="A7:C7" με το StartRange:="A7:C" & Rows.Count.

Όσο για την αλλαγή κωδικού ονόματος ενός φύλλου και γενικά ενός αντικειμένου στη VB
δες την εικόνα παρακάτω:
Αυτόματο Φίλτρο Χωρίς DropDown menu-imgxlautofilter.png
Θα πρέπει να αποφεύγουμε να επικαλούμαστε ονόματα φύλλων στην Excel που ο κοινός χρήστης θα μπορούσε να μετονομάσει/μετακινήσει από την επιφάνεια εργασίας της εφαρμογής προκαλώντας σφάλματα στον κώδικα μας.

Μια καλή λύση είναι να χρησιμοποιούμε το κωδικό όνομα ενός φύλλου το οποίο δεν επηρεάζεται από επεξεργασίες του ονόματος του φύλλου που ίσως θελήσει να κάνει ο χρήστης.

Καλή συνέχεια!

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #10  
Παλιά 09-07-11, 17:05
mak Ο χρήστης mak δεν είναι συνδεδεμένος
Όνομα: Μανώλης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 15-05-2011
Περιοχή: ΗΡΑΚΛΕΙΟ
Μηνύματα: 26
Προεπιλογή Καλησπερα σε όλη την κονοτητα

Φιλε Τασο,

Αυτο ήταν ....
Δουλεύει αψογα...
Σε ευχαριστω παρα πολύ για το χρονο σου

Φιλικα

Μανωλης
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Menu alex Access - Ερωτήσεις / Απαντήσεις 3 26-02-13 06:53
Ρύθμιση ιδιότητας shortcut menu -Poprecords alex Access - Ερωτήσεις / Απαντήσεις 2 05-03-12 14:33
Menu cybervit Access - Ερωτήσεις / Απαντήσεις 1 15-09-11 15:47
[Συναρτήσεις] Αυτόματη Άθροιση τιμών που δεν είναι κρυφές από ένα αυτόματο φίλτρο maxtor10 Excel - Ερωτήσεις / Απαντήσεις 2 09-07-11 05:05
menu που βρίσκονται ως μπάρα επάνω στην Access atlasgr Access - Ερωτήσεις / Απαντήσεις 2 16-11-10 22:04


Η ώρα είναι 12:46.