![]() |
Στον προηγούμενο κώδικα η γραμμή: rngTarget.Cells(i, j) = rngSource.Cells(i, j) να αντικατασταθεί με την: rngTarget.Cells(i, j).Formula = rngSource.Cells(i, j).Formula |
Γεια σου Γιώργο. Δεν είναι ακριβώς έτσι, ότι μία περιοχή αντιγράφεται σε μία άλλη, αλλά αντιγράφεται στον εαυτό της – αντικαθιστά κατά την αντιγραφή στον εαυτό της τον πολλαπλασιασμό και όλα τα άλλα τα αφήνει ανέπαφα. Έτσι χρησιμοποιώντας τον τροποποιημένο κώδικα, όταν το εκτελώ στο αρχείο το οποίο εντέλει θα σταλεί και στη μητρική εταιρία, επειδή αυτό είναι κλειδωμένο με ξεκλείδωτα μόνο τα κελιά όπου καταχωρούνται οι παραγγελίες ( ποσότητα * κιβώτια ), τελικά βγαίνει σφάλμα όταν προσπαθεί να αντιγράψει τους υπόλοιπους τύπους αυτούσια όπως είναι, αλλά σε κλειδωμένο κελί. Πράγματι θα χρειαζόταν η νέα τροποποίηση εάν η περιοχή επικόλλησης γινόταν σε άλλο φύλλο ξεκλείδωτο, όπου χωρίς αυτή την τροποποίηση δεν θα έφερνε όλους τους τύπους που θα εντόπιζε σε κλειδωμένα κελιά. Έτσι για να δουλέψει πρέπει να αγνοεί εντελώς τα κλειδωμένα κελιά, διαφορετικά δεν μπορεί να εκτελεστεί η ρουτίνα. Σχετικά με τη διόρθωση: rngTarget.Cells(i, j) = rngSource.Cells(i, j) σε rngTarget.Cells(i, j).Formula = rngSource.Cells(i, j).Formula φαντάζομαι πως ναι είναι απαραίτητη, αν και η πρώτη διατύπωση (χωρίς το . Formula) έχει ως αποτέλεσμα να μην πειράζει καθόλου το κελί που δεν έχει συνάρτηση, τότε μάλλον και αυτό δεν πειράζει. Για την ορθότητα όμως θα το διορθώσω. Παρεμπιπτόντως με το AddIn έπαιξε άψογα. Φιλικά Δημήτρης |
Καλησπέρα Δημήτρη, αφού η αντιγραφή γίνεται πάνω στην περιοχή προέλευσης ο κώδικας θα μπορούσε να απλοποιηθεί στον ακόλουθο: Κώδικας: Sub ReplaceMultiRecursive()Φιλικά/Γιώργος |
Ή καλύτερα με τον παρακάτω: Κώδικας: Sub ReplaceMultiRecursive() |
Πράγματι η τελευταία απλοποίηση στον κώδικα είναι περιεκτική και ολοκληρωμένη για το συγκεκριμένο στόχο που πρέπει να επιτευχθεί, και ευθύς αμέσως την τοποθέτησα στο AddIn. Μέσα από όλη τη διαδικασία των τροποποιήσεων κράτησα σαφώς κι εκείνη – την πιο ολοκληρωμένη – σε περίπτωση που η περιοχή επικόλλησης είναι διαφορετική από την περιοχή αντιγραφής και πρέπει να μην αγνοείται κανένα κελί, έτσι ώστε εάν προκύψει ανάγκη στο μέλλον για ίδια ή παρόμοια ενέργεια να έχω κάτι πάνω στο οποίο μπορώ να «πατήσω». Να είσαι καλά Γιώργο, να μας δίνεις τα φώτα σου. Ευχαριστώ Δημήτρης |
Δημήτρη να είσαι επίσης καλά. |
| Η ώρα είναι 10:12. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.