Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Αντιγραφή δεδομένων από πίνακα με vba φίλτρα (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/5861-antigrafi-dedomenon-apo-pinaka-me-visual-basic-applications-filtra.html)

Γεωργιος Πρ. 17-04-21 17:45

Αντιγραφή δεδομένων από πίνακα με vba φίλτρα
 
Γειά σάς.Τα φώτα σας για άλλη μία φορά, έχω κολλήσει!!!Έχω ήδη κατασκευάσει ένα πίνακα στο excel 2007.Μεσω vba εφαρμόζω κριτήρια σε 2 από της 6 στήλες. Ότι απομένει το αντιγραφω σε άλλο φύλλο μέσω vba πάλι. Μέχρι εδώ όλα καλά αλλά όταν εφαρμόζω κριτήρια σε ένα ή και στις 2 στήλες....τα εναπομένοντα δεδομένα μερικές φορές δεν υπάρχουν με αποτέλεσμα οι εμφανείς γραμμές του πίνακα να είναι μόνο οι επικεφαλίδες.Πώς μπορώ να αποφύγω το λάθος που μου βγάζει στην vba ότι δεν βρήκε δεδομένα•υπάρχει τρόπος να μετρήσω τις εμφανείς γραμμές ενός πίνακα και αν είναι >0 να βάλω μια if και τότε να εκτελεί το κώδικα που εκτελείται όταν υπάρχουν δεδομένα με φιλτρα?

ChrisGT7 18-04-21 10:02

Καλημέρα Γιώργο,

Όπως σωστά αναφέρεις, θα πρέπει να μετρηθούν οι εμφανείς γραμμές του φίλτρου που εφαρμόζεις.

Έστω ότι ο πίνακας των δεδομένων σου είναι ο "ΠΙΝΑΚΑΣ1", τότε μπορείς να κάνεις τον παρακάτω έλεγχο:
Κώδικας:

    If ActiveSheet.ListObjects("ΠΙΝΑΚΑΣ1").Range.Rows.SpecialCells(xlCellTypeVisible).Count=0 Then Exit Sub
Μετά την παραπάνω γραμμή, θα πρέπει να ακολουθεί ο κώδικας που θέλεις να εκτελεστεί. Αν υπάρχει πρόβλημα, τότε ανέβασε ένα δείγμα του κώδικα που χρησιμοποιείς για περαιτέρω έλεγχο.

Γεωργιος Πρ. 18-04-21 15:50

Ευχαριστώ πάρα πολύ για την άμεση ανταπόκριση.Θα το δοκιμάσω και ενημέρωσω σύντομα

Γεωργιος Πρ. 23-04-21 16:15

Τελικά δεν μου δούλεψε...αλλά πιθανον να μην φταίει και ο κώδικας σου. Και βρηκα και γιατί δεν δουλευε...είχε ήδη έναν έλεγχο...ο οποίος όμως δεν γινόταν
If .range.rows.specialcells(xlcelltypevisible).count/7=1 then
Ο οποίος έγινε και δούλεψε ξανά ορθά
If .range.rows.specialcells(xlcelltypevisible).count/5=1 then
Και όλο αυτό γιατί διέγραψα 2 στήλες...και ρωτάω εγκυκλοπαιδικά...
Γιατί 1...και όχι 0 όπως μου έγραψες στον ανωτέρω κώδικα...αφού οι εμφανείς γραμμές είναι 0 όταν το φίλτρο δεν έχει αποτελέσματα....

ChrisGT7 23-04-21 20:22

Πολύ πιθανόν αυτό το 1 να αναφέρεται στη γραμμή της επικεφαλίδας.

Καλό θα ήταν να ανέβαζες ένα δείγμα του κώδικα ή του αρχείου για καλύτερο έλεγχο.


Η ώρα είναι 11:33.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2