![]() |
Αντιστροφή μορφής ημερομηνίας από φόρμα στο φύλλο 1 Συνημμένο(α) Καλημέρα. Γράφω για πρώτη φορά εφόσον τώρα άρχισα να ασχολούμαι με VBA. Έχω φτιάξει μία φόρμα καταχωρήσεων και έχω το εξής πρόβλημα με τις ημερομηνίες. Μου τις αντιστρέφει από τη φόρμα που φαίνεται σωστή, στο φύλλο εργασίας που και εκεί έχω πιστεύω σωστά τη μορφοποίηση του κελιού με την ημερομηνία ως ηη/μμ/εεεε και στη φόρμα ως dd/mm/yyyy. Όταν πάω να εισάγω ημερομηνία πχ. τη σημερινή 7/2/2019 στο φύλλο αντιστρέφεται ως 2/7/2019 και αντίστροφα αν βάλω στη φόρμα 2/7/2019 στο φύλλο 7/2/2019. Δεν έχω πολλές γνώσεις, είμαι σε πολύ χαμηλό επίπεδο και ότι κάνω το κάνω μέσα από tutorials και βίντεο σχετικά με το θέμα. Δεν ξέρω αν είναι θέμα ότι χρησιμοποιώ ελληνική έκδοση Office 2019, αλλά το ίδιο συμβαίνει και με τα 2013 και 2017 στις Ελληνικές εκδόσεις που δοκίμασα. Επισυνάπτω το αρχείο. Ευχαριστώ εκ των προτέρων. |
1 Συνημμένο(α) Καλησπέρα Μιχάλη, Το έχω συναντήσει κι εγώ αυτό το πρόβλημα στην καταχώρηση των ημερομηνιών. Φαίνεται πως το σύστημα ημερομηνίας (Τοπικές Ρυθμίσεις) του Excel "μπλέκεται" με το αμερικάνικο σύστημα της VBA. Χρησιμοποίησα συνδυασμό των CLng() και DATE() για να διορθώσω το πρόβλημα. Δοκίμασε κι εσύ να δεις αν όλα βαίνουν καλώς. |
Παράθεση:
|
1 Συνημμένο(α) Να 'μαι πάλι!! :byebye:. Έχω ένα ερώτημα (Τι άλλο θα είχα) σχετικά με τη φόρμα. Την εξέλιξα λιγάκι σε σχέση με το προηγούμενο και εκτός των άλλων πρόσθεσα και ένα List Box στη φόρμα. Υπάρχει η δυνατότητα αν στο φύλλο εργασίας πχ. στην ημερομηνία κάνω χρήση του φίλτρου στο φύλλο φθορές αυτό να εφαρμόζεται και στο List Box; |
Μιχάλη, μπορείς το ενεργό φίλτρο στο φύλλο Φθορές να το μεταφέρεις και στο Listbox. Όμως αν π.χ. έχεις φίλτρο στην ημερομηνία με 26/02/2019 και καταχωρήσεις μια εγγραφή με άλλη ημερομηνία, δε θα τη δεις αμέσως στο listbox. Για να τη δεις θα πρέπει να αλλάξεις το φίλτρο με το ανάλογο κριτήριο. Μια πρόταση είναι με την καταχώρηση κάθε νέας εγγραφής, το φίλτρο να αλλάζει με κριτήριο την ημερομηνία της νέας εγγραφής που μόλις καταχωρήθηκε έτσι ώστε στο listbox να φορτωθούν όλες οι εγγραφές με αυτήν την ημερομηνία. Θες κάτι τέτοιο; |
Παράθεση:
|
Παράθεση:
https://www.onlinepclearning.com/wp-.../dance-gif.gif |
Ναι, φυσικά και γίνεται η μεταφορά δεδομένων που περιγράφεις. Και αν τα φύλλα είναι ήδη δημιουργημένα ανά μήνα όπως αναφέρεις, μπορείς κατά την καταχώρηση μιας νέας εγγραφής, ελέγχοντας την ημερομηνία φθοράς ή με ένα ξεχωριστό combo box, να στέλνεται αυτόματα στο αντίστοιχο φύλλο. Θα διαφωνήσω όμως μ' αυτό το σκεπτικό, γιατί η καταχώρηση θα γίνει λίγο περίπλοκη για τον απλό χρήστη. Δηλαδή: - Αν κατά την καταχώρηση γραφτεί μια ημερομηνία λάθος, θα σταλεί σε λάθος φύλλο, οπότε μετά θα πρέπει να αναζητάς σε ποιο φύλλο πήγε. - Διόρθωσέ με αν κατάλαβα λάθος με αυτό που γράφεις "Οι φθορές σε αριθμό δεν πρόκειται να ξεπεράσουν σε αριθμό τις στήλες στο φύλλο". Οι στήλες στο φύλλο Φθορές είναι οκτώ, οπότε κάθε μήνα θα έχεις από οκτώ εγγραφές περίπου; Αν είναι έτσι, γιατί να έχεις τόσα φύλλα εργασίας για τόσες λίγες εγγραφές; - Για ποιο λόγο να καταργήσεις ένα από τα πιο δυνατά εργαλεία του Excel, όπως είναι το φίλτρο; Και ειδικά όταν έχεις να κάνεις με λίστες που μπορείς πολύ εύκολα να φιλτράρεις δεδομένα και να παίρνεις πολύ γρήγορα στοιχεία, π.χ. πόσες φιάλες έσπασαν από 10/04/2019 μέχρι 25/04/2019; - Ακόμα και πολλές εγγραφές να έχεις ανά μήνα, το φίλτρο θα είναι απαραίτητο και πάλι για μια συγκεκριμένη αναζήτηση. Αν παρόλα αυτά είναι απαιτητό να γίνει η υλοποίηση όπως την αναφέρεις, τότε βλέπουμε τι μπορούμε να κάνουμε. |
Παράθεση:
|
Καλησπέρα. Παρακολουθώ την «συζήτηση» και θα ήθελα να σας πω μερικά πράγματα... Πάμε πίσω στο post #4... Το αρχείο έχει πολλά συγχωνευμένα κελιά (πολύ κακό για τον κώδικα) Το φύλλο αρχική, δεν έχει κανένα ουσιαστικό ρόλο, παρά μόνο...«ομορφιά» να το πώ; Η φόρμα, έχει λάθη και είναι «μπερδεψοδουλειά» για τον δημιουργό βασικά, αφού έχουμε ταυτόχρονα, Textboxes και Comboboxes, με ονομασία TextBox1, TextBox2 κλπ. Τελικά τι είναι τι, δεν μπορεί να καταλάβει κανείς με το πρώτο, αλλά πρέπει να το ψάξει... Από την άλλη, πολλά Msgboxes, χωρίς νόημα, που «κουράζουν» τον χρήστη. Όταν θέλω να κλείσω την φόρμα, το: MsgBox("Θέλετε σίγουρα να κλείσετε τη φόρμα καταχωρήσεων;" δεν χρειάζεται. Για να πατήσω το κουμπί «Κλείσιμο φόρμας» ναι θέλω να την κλείσω... Αλλά και το QueryClose, που με οδηγεί στο: MsgBox "Παρακαλώ πατήστε το πλήκτρο κλείσιμο!" είναι περιττό. Θα πρέπει ή να καταργηθεί το κουμπί «Κλείσιμο φόρμας» και να κλείνει από το default "X" κουμπί, ή να καταργηθεί το default "X" κουμπί (να μην φαίνεται καθόλου) και να κλείνει από το κουμπί «Κλείσιμο φόρμας» Τώρα... Από την στιγμή, που κάποιος έχει φόρμα στην εργασία του, θα πρέπει ή να κάνει μόνο καταχωρήσεις από την φόρμα και τίποτε άλλο (με βάση το επίπεδο χρηστών που έχετε αναφέρει) και τα υπόλοιπα... φίλτρα κλπ να γίνουν στα φύλλα ή να κάνει τα πάντα στην φόρμα, ώστε να μην γίνονται λάθη (αυτό θα το αποτρέπει ο κώδικας) και να μην έχει επαφή με τα φύλλα καθόλου... Εδώ βέβαια, μιλάμε για πρόγραμμα... Μπορούμε να σε βοηθήσουμε σε αυτό, αλλά όχι να στο δώσουμε έτοιμο. Προχωράς φτάνεις κάπου, κι αν δυσκολεύεσαι βοηθάμε επάνω στο δικό σου έργο... Όσο για το gif με τη σχολή χορού...είναι από ένα site (το οποίο γνωρίζω, αλλά δεν θα αναφέρω) που όπως όλα τα sites του χώρου αυτού, δίνουν οδηγίες και κατευθύνσεις αλλά κανείς δεν μπορεί να μάθει vba, και να δημιουργεί προγράμματα από tutorials... Πρόταση Για ένα τόσο μικρό πρόγραμμα, με τόσο λίγες εγγραφές και χρήστες αρχάριους όπως είπες, ένα φύλλο καταχωρήσεων, μια φόρμα μόνο για καταχωρήσεις, με έλεγχο σφαλμάτων ενώ τα υπόλοιπα, από το πολύ φιλικό περιβάλλον των φύλλων, είναι υπέρ αρκετό. Τα πολύ «φαντεζί» πράγματα, δεν είναι πιο χρηστικά από τα απλά. |
Παράθεση:
Παράθεση:
Θα ακολουθήσω πάντως τις παρατηρήσεις σου. :001_smile: |
1 Συνημμένο(α) Μιχάλη, Με πρόλαβε σχεδόν σ' όλα ο Σπύρος, τα οποία είχα σκοπό να στα αναφέρω ώστε να μαθαίνεις και να διορθώνεσαι με τον καιρό, αφού όπως είπες σου αρέσουν πολύ οι δυνατότητες που προσφέρει το Excel. 1. Κουμπί κλεισίματος: Όπως είπε και ο Σπύρος, το θεωρώ περιττό αλλά παρόλα αυτά το έβαλα πάνω δεξιά να το βλέπει ο χρήστης πιο εύκολα. Μια ιδέα είναι να το κρύψεις πίσω από κάποιο ελεγκτήριο (π.χ. το listbox) να μη φαίνεται καθόλου ώστε να εκμεταλλεύεσαι τη χρησιμότητα της ιδιότητάς του Cancel. Αν την έχεις True, πατώντας το Esc εκτελείται ο κώδικας σαν να έκανες κλικ, έχοντας σύμμαχο το κλασικό κουμπί "Χ". 2. Listbox: Κατά τη διάρκεια των καταχωρήσεων, πίστεψέ με, ο χρήστης έχει την προσοχή του στα παραστατικά και επικεντρώνεται σ' αυτά για να μην κάνει λάθη. Και πάλι όπως είπε ο Σπύρος, είναι περιττό αλλά παρόλα αυτά, δίπλα σε κάθε πεδίο καταχώρησης έχω βάλει από ένα checkbox, τα οποία επιρρεάζουν το φίλτρο του φύλλου Φθορές και συνεπώς το listbox. Έχω κάποια δοκιμαστικά δεδομένα στο φύλλο, οπότε μπορείς να πειραματιστείς. Λειτουργούν και οι χαρακτήρες μπαλαντέρ * και ?. 3. Ημερομηνίες και αριθμοί: Αφού προτιμάς να φτιάξεις μια φόρμα καταχώρησης, καλό θα ήταν ο χρήστης να βοηθιέται σε συγκεκριμένα πεδία που απαιτούν προσοχή, όπως οι ημερομηνίες και οι αριθμοί. Σ' αυτά τα πεδία έβαλα λίγο κώδικα να "σουλουπώνονται" τις καταχωρήσεις, π.χ. στην ημερομηνία αν γράψεις 5/6 και φύγεις από το πεδίο θα γίνει 05/06/2019, ενώ αν βάλεις γράμματα μένει κενό. 4. Ονοματολογίες αντικειμένων/ελεγκτηρίων: Καλό θα ήταν να δίνεις ονόματα που θα σε βοηθούν να γράφεις και να διαβάζεις πιο εύκολα τον κώδικά σου. Π.χ. ένα textbox για το όνομα πελάτη ονόμασέ το TxtCustomer ή TxtPelath, ένα combobox για επαγγέλματα CmbJobs, ένα checkbox για επανάληψη καταχώρησης ChkRepeat κ.ο.κ. Δηλαδή να δίνεις ονόματα με κάποια λογική στη λειτουργία του κάθε αντικειμένου. 5. Ιδιότητα TabIndex: Όταν φτιάχνεις φόρμες με πολλά πεδία, μια πολύ βασική ιδιότητα για την ομαλή και πιο εύκολη καταχώρηση είναι η ιδιότητα TabIndex των αντικειμένων. Δηλώνει σε ποιο αντικείμενο θα μεταφερθεί ο κέρσορας όταν πατήσεις το Tab. Όταν φορτώνει μια φόρμα, το αντικείμενο που έχει 1 σ' αυτή την ιδιότητα, ο κέρσορας θα αναβοσβήνει εκεί. Αν πατήσεις Tab, θα πάει στο αντικείμενο με την τιμή 2 κ.ο.κ. Όταν γράφεις κώδικα, θα πρέπει να μπεις στο μυαλό του απλού χρήστη και να του κάνεις τη ζωή όσο γίνεται πιο εύκολη. Και σιγά σιγά καθώς χειρίζονται το πρόγραμμα, θα σου λένε τι χρειάζονται παραπάνω ή τι να διορθώνεις. Καλή εξάσκηση και μπράβο στις προσπάθειες που καταβάλλεις να μάθεις κάτι νέο! :) |
Παράθεση:
|
| Η ώρα είναι 10:12. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.