Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Αυτοματη συμπληρωση textbox συμφωνα με 2 combobox (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/5771-aytomati-symplirosi-textbox-symfona-me-2-combobox.html)

Rodokanator 15-01-21 20:31

Σιγουρα η απλοτητα ειναι το καλυτερο αλλα αυτοι που θα χρησιμοποιουν το αρχειο περα απο κλικ δυσκολευονται....οποτε σπαω το κεφαλι μου και το δικο σου για να κανω δουλεια. Το κουμπακι της μεταφορας ειναι αψογο απλα. Υπαρχει τροπος ο πινακας που θα επιλεγουμε να ειναι στο τερμα αριστερα και πανω κελι ενω ταυτοχρονα θα κλεινει το userform? Επισης απλα Cells θα βαλω αντι για Rows(1:1) ή Cells(1:1)?
Αν γινει και αυτο τοτε θα με εχεις ξεφορτωθει για τα καλα!
Η βοηθεια σου ειναι ανεκτιμητη!
Και παλι ευχαριστω!

ChrisGT7 15-01-21 21:12

Λογικά πρέπει να εννοείς το κελί κάτω από τα κελιά Number. Αν ναι, τότε αντικατέστησε τη γραμμή
.Rows("1:1").Find(CmbKAE.Text & " " & CmbKAE12.Text).Activate
με την
.Rows("1:1").Find(CmbKAE.Text & " " & CmbKAE12.Text).Offset(2,0).Activate
και πρόσθεσε από κάτω της τη φράση Unload Me.

Απλά Cells, όπου χρειαζόμαστε η αναζήτηση να γίνει σε όλα τα κελιά του φύλλου.

Rodokanator 15-01-21 21:20

Εννοω ο πινακας στον οποιο θα μεταφερομαστε να ειναι τερμα πανω αριστερα σαν να ξεκιναει η σελιδα απο εκει. Οχι να μεταφερεται ο πινακας, η οθονη να κινειται ετσι σαν να ξεκιναει απο εκει η σελιδα.....δεν ξερω αν το περιγραφω σωστα.....:036:

ChrisGT7 15-01-21 21:40

Το παρακάτω κομμάτι του κώδικα
Κώδικας:

    With Worksheets("ΔΕΔΟΜΕΝΑ")
        If .Rows("1:1").Find(CmbKAE.Text & " " & CmbKAE12.Text) Is Nothing Then Exit Sub
        .Activate
        .Rows("1:1").Find(CmbKAE.Text & " " & CmbKAE12.Text).Activate
    End With

αντικατέστησέ το μ' αυτό:
Κώδικας:

    With Worksheets("ΔΕΔΟΜΕΝΑ")
        If .Rows("1:1").Find(CmbKAE.Text & " " & CmbKAE12.Text) Is Nothing Then Exit Sub
        .Activate
        .Cells(Rows.Count, Columns.Count).Activate
        Application.Goto .Rows("1:1").Find(CmbKAE.Text & " " & CmbKAE12.Text)
        Unload Me
    End With

Δηλαδή ο ζητούμενος πίνακας να φαίνεται πως είναι ο πρώτος στο φύλλο εργασίας.

Rodokanator 15-01-21 21:41

1 Συνημμένο(α)
Αλλαξα το Rows(1:1) με Cells και τη γραμμη που μου ειπες και τωρα μου βγαζει σφαλμα. Εκανα κατι λαθος? επισυναπτω και μια εικονα του σφαλματος. Νομιζω οτι δεν αναγνωριζει το Cells....

ChrisGT7 15-01-21 21:52

Κάτω από το End IF της φωτογραφίας, αντικατέστησε τις τέσσερις γραμμές με τα παρακάτω:
Κώδικας:

With Worksheets("DATA")
        If .Cells.Find(CmbKAE.Text & " " & CmbKAE12.Text) Is Nothing Then Exit Sub
   
        Dim MyCell As Range
        Set MyCell = .Cells.Find(CmbKAE.Text & " " & CmbKAE12.Text)
        LsBx.RowSource = "DATA!" & MyCell.Offset(1, 0).Address & ":" & .Cells(Rows.Count, MyCell.Column + 4).End(xlUp).Address
End With


Rodokanator 15-01-21 22:10

Ολα δουλευουν στην εντελεια!!!
Και παλι ευχαριστω η βοηθεια σου ηταν καθοριστικη!
:metalo::metalo::metalo::metalo::metalo::metalo:

Rodokanator 03-02-21 19:17

1 Συνημμένο(α)
Επανερχομαι στο θεμα με νεες ερωτησεις. Επειδη οι διαθεσιμοι κωδικοι ειναι πολλοι και ειναι τρελο να κατσω να τους φτιαξω ολους σκεφτηκα το εξης: υπαρχει τροπος να εχω το προσχεδιο ενος πινακα στο φυλλο DATA και αν ο πινακας με το συνδιασμο που ψαχνω δεν υπαρχει να υπαρχει κουμπι που αντιγραφοντας τον πινακα "μητρα" να τον δημιουργει δινοντας του τον κωδικο που εχω επιλεξει στα δυο combo boxes? Σκεφτηκα καθε πινακας να εχει καθετη διασταση 100 γραμμες και το προγραμμα να ψαχνει απο το κατω μερος του φυλλου ωστε οταν θα περισσευουν για παραδειγμα 90 γραμμες να τον δημιουργει σε ενα νεο φυλλο.

ChrisGT7 03-02-21 21:32

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

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

Πρακτικά όμως δημιουργούνται σημαντικές δυσκολίες κατά την εφαρμογή αυτής της ιδέας, όπως:
1. Μεγάλη καθυστέρηση στο άνοιγμα του αρχείου με το πέρασμα του χρόνου, γιατί προστίθενται νέοι πίνακες ΚΑΕ.
2. Αυξημένος όγκος αρχείου, διότι δεσμεύεται σταθερός αριθμός γραμμών (π.χ. 100). Αν ένας ΚΑΕ έχει π.χ. 1 κίνηση, γιατί να δεσμευτούν 100 γραμμές;
3. Πάρα πολλά κελιά που περιέχουν συναρτήσεις με αποτέλεσμα μεγάλη δέσμευση πόρων υπολογιστή στον υπολογισμό τους και προφανώς αρκετή καθυστέρηση στην αναζήτηση.

Επανέρχομαι πάλι στην σχετικά απλή πρόταση που σου κάνει. Δηλαδή:

Καταχώρηση όλων των κινήσεων σε έναν πίνακα με φίλτρο. Το φίλτρο παρέχει αμεσότερη, γρηγορότερη και ευκολότερη αναζήτηση παλαιότερων εγγραφών (κλικ στο βελάκι, πληκτρολόγηση ένα κομμάτι αυτού που αναζητάς και ΟΚ).

Σε άλλο φύλλο θα υπάρχει μονάχα ένας πίνακας, όπου βάζοντας τον επιθυμητό ΚΑΕ, θα φιλτράρει όλες τις εγγραφές και θα φέρνει αυτές του συγκεκριμένου ΚΑΕ.

Επίσης, εύκολα μπορούν να προυπάρχουν όλοι οι συνδυασμοί των ΚΑΕ σε μια στήλη (10.112 σύμφωνα με το αρχείο σου) και σε μια διπλανή να προσθέτεις την περιγραφή του όταν προκύπτει.

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

Rodokanator 03-02-21 22:58

Καταλαβαινω απολυτα το σκεπτικο σου και το εχω εξηγησει και εγω αλλα δυστυχως λογω ελλειψης γνωσεων και ευχερειας χρησης του excel μου ζητουν παραθυρικο περιβαλλον και για αυτο ταλαιπωριεμαι και ταλαιπωρω και αλλους. Οποτε παμε για τη δυσκολη επιλογη. Θα ηθελα ομως να δω και την πιο απλη επιλογη μηπως και μπορεσω να τους πεισω για τα πλεονεκτηματα της. Και παλι ευχαριστω και υγνωμη για την ταλαιπωρια!!!


Η ώρα είναι 06:26.

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


Search Engine Optimization by vBSEO 3.3.2