Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Αντιστροφή μορφής ημερομηνίας από φόρμα στο φύλλο (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/5152-antistrofi-morfis-imerominias-apo-forma-sto-fillo.html)

istrios 27-02-19 18:36

Παράθεση:

Αρχική Δημοσίευση από Spirosgr (Μήνυμα 29135)
Καλησπέρα.
Παρακολουθώ την «συζήτηση» και θα ήθελα να σας πω μερικά πράγματα...

Πάμε πίσω στο post #4...
Το αρχείο έχει πολλά συγχωνευμένα κελιά (πολύ κακό για τον κώδικα)
Το φύλλο αρχική, δεν έχει κανένα ουσιαστικό ρόλο, παρά μόνο...«ομορφιά» να το πώ;
Η φόρμα, έχει λάθη και είναι «μπερδεψοδουλειά» για τον δημιουργό βασικά, αφού έχουμε ταυτόχρονα,
Textboxes και Comboboxes, με ονομασία TextBox1, TextBox2 κλπ.
Τελικά τι είναι τι, δεν μπορεί να καταλάβει κανείς με το πρώτο, αλλά πρέπει να το ψάξει...

Από την άλλη, πολλά Msgboxes, χωρίς νόημα, που «κουράζουν» τον χρήστη.
Όταν θέλω να κλείσω την φόρμα, το:
MsgBox("Θέλετε σίγουρα να κλείσετε τη φόρμα καταχωρήσεων;" δεν χρειάζεται.
Για να πατήσω το κουμπί «Κλείσιμο φόρμας» ναι θέλω να την κλείσω...

Αλλά και το QueryClose, που με οδηγεί στο:
MsgBox "Παρακαλώ πατήστε το πλήκτρο κλείσιμο!" είναι περιττό.

Θα πρέπει ή να καταργηθεί το κουμπί «Κλείσιμο φόρμας» και να κλείνει από το default "X" κουμπί,
ή να καταργηθεί το default "X" κουμπί (να μην φαίνεται καθόλου) και
να κλείνει από το κουμπί «Κλείσιμο φόρμας»

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

Εδώ βέβαια, μιλάμε για πρόγραμμα...
Μπορούμε να σε βοηθήσουμε σε αυτό, αλλά όχι να στο δώσουμε έτοιμο.

Προχωράς φτάνεις κάπου, κι αν δυσκολεύεσαι βοηθάμε επάνω στο δικό σου έργο...

Όσο για το gif με τη σχολή χορού...είναι από ένα site (το οποίο γνωρίζω, αλλά δεν θα αναφέρω)
που όπως όλα τα sites του χώρου αυτού, δίνουν οδηγίες και κατευθύνσεις αλλά
κανείς δεν μπορεί να μάθει vba, και να δημιουργεί προγράμματα από tutorials...

Πρόταση
Για ένα τόσο μικρό πρόγραμμα, με τόσο λίγες εγγραφές και χρήστες αρχάριους όπως είπες,
ένα φύλλο καταχωρήσεων,
μια φόρμα μόνο για καταχωρήσεις, με έλεγχο σφαλμάτων
ενώ τα υπόλοιπα, από το πολύ φιλικό περιβάλλον των φύλλων, είναι υπέρ αρκετό.

Τα πολύ «φαντεζί» πράγματα, δεν είναι πιο χρηστικά από τα απλά.

Σπύρο καλησπέρα. Ξεκίνησα μόλις φέτος το χειμώνα με μηδέν γνώσεις ν ασχολούμαι με excel και VBA και γι αυτό βλέπεις και πολλά λάθη από τη μία και τόσες πολλές ερωτήσεις στο Φόρουμ. Ξεσήκωσα φόρμες και παρακολουθώντας οδηγίες μάλλον χάθηκα κι εγώ από τη μία κι από την άλλη από ενθουσιασμό σε ότι κατάφερνα έλεγα ωραίο αυτό, ωραίο το άλλο. Τη VBA τη θεωρώ για το χαμηλό επίπεδο μου άπιαστο όνειρο...δεν πρόκειται να γράψω με δικό μου σκεπτικό κανέναν κώδικα γιατί απλά δεν ξέρω και τη θεωρώ άκρως δουλειά επαγγελματία με σπουδές στο αντικείμενο...ένας απλός ταμίας στην εργασία μου είμαι και επειδή όλα αυτά περνάνε από τα χέρια μου εκτός την έκδοση λογαριασμών, ταμείο κλπ, έχω τις κρατήσεις, τις φθορές, τις ενδοτμηματικές κινήσεις μεταξύ τμημάτων...πολύ γράψιμο και χαρτί δηλαδή και είπα μήπως κάνω την εργασιακή ζωή μου ευκολότερη. Υπάρχουν ακόμα άλλα δύο τμήματα που αναγκαστικά πρέπει κι αυτά να δουλεύουν με ότι έφτιαξα για να είναι ομοιόμορφα όλα. Να ξέρεις ότι οι συμβουλές είναι σωστές. Πες το υπέρμετρο ενθουσιασμό για έναν που βλέπει τις δυνατότητες ενός προγράμματος για πρώτη φορά και να υπερέβαλα.
Παράθεση:

Αρχική Δημοσίευση από Spirosgr (Μήνυμα 29135)
Τώρα...
Από την στιγμή, που κάποιος έχει φόρμα στην εργασία του, θα πρέπει
ή να κάνει μόνο καταχωρήσεις από την φόρμα και τίποτε άλλο
(με βάση το επίπεδο χρηστών που έχετε αναφέρει) και τα υπόλοιπα...
φίλτρα κλπ να γίνουν στα φύλλα ή
να κάνει τα πάντα στην φόρμα, ώστε να μην γίνονται λάθη (αυτό θα το αποτρέπει ο κώδικας)
και να μην έχει επαφή με τα φύλλα καθόλου...

Εδώ βέβαια, μιλάμε για πρόγραμμα...
Μπορούμε να σε βοηθήσουμε σε αυτό, αλλά όχι να στο δώσουμε έτοιμο.

Προχωράς φτάνεις κάπου, κι αν δυσκολεύεσαι βοηθάμε επάνω στο δικό σου έργο...

Γι αυτό το ενδεχόμενο τη δημιουργία ενός τύπου προγράμματος που αναφέρεις πολύ φοβάμαι ότι δεν θα τα καταφέρω να το ολοκληρώσω..αλλά από την άλλη όπως λέει και ο λαός ..ποτέ μην λες ποτέ...αλλά δεν μου το έχω...νομίζω :hmm:

Θα ακολουθήσω πάντως τις παρατηρήσεις σου. :001_smile:

ChrisGT7 27-02-19 21:17

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 κ.ο.κ.

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

Καλή εξάσκηση και μπράβο στις προσπάθειες που καταβάλλεις να μάθεις κάτι νέο! :)

istrios 28-02-19 11:46

Παράθεση:

Αρχική Δημοσίευση από ChrisGT7 (Μήνυμα 29142)
Μιχάλη,

Με πρόλαβε σχεδόν σ' όλα ο Σπύρος, τα οποία είχα σκοπό να στα αναφέρω ώστε να μαθαίνεις και να διορθώνεσαι με τον καιρό, αφού όπως είπες σου αρέσουν πολύ οι δυνατότητες που προσφέρει το 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:10.

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


Search Engine Optimization by vBSEO 3.3.2