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 07-02-19 12:59

Αντιστροφή μορφής ημερομηνίας από φόρμα στο φύλλο
 
1 Συνημμένο(α)
Καλημέρα. Γράφω για πρώτη φορά εφόσον τώρα άρχισα να ασχολούμαι με VBA. Έχω φτιάξει μία φόρμα καταχωρήσεων και έχω το εξής πρόβλημα με τις ημερομηνίες. Μου τις αντιστρέφει από τη φόρμα που φαίνεται σωστή, στο φύλλο εργασίας που και εκεί έχω πιστεύω σωστά τη μορφοποίηση του κελιού με την ημερομηνία ως ηη/μμ/εεεε και στη φόρμα ως dd/mm/yyyy. Όταν πάω να εισάγω ημερομηνία πχ. τη σημερινή 7/2/2019 στο φύλλο αντιστρέφεται ως 2/7/2019 και αντίστροφα αν βάλω στη φόρμα 2/7/2019 στο φύλλο 7/2/2019. Δεν έχω πολλές γνώσεις, είμαι σε πολύ χαμηλό επίπεδο και ότι κάνω το κάνω μέσα από tutorials και βίντεο σχετικά με το θέμα. Δεν ξέρω αν είναι θέμα ότι χρησιμοποιώ ελληνική έκδοση Office 2019, αλλά το ίδιο συμβαίνει και με τα 2013 και 2017 στις Ελληνικές εκδόσεις που δοκίμασα. Επισυνάπτω το αρχείο. Ευχαριστώ εκ των προτέρων.

ChrisGT7 07-02-19 19:23

1 Συνημμένο(α)
Καλησπέρα Μιχάλη,

Το έχω συναντήσει κι εγώ αυτό το πρόβλημα στην καταχώρηση των ημερομηνιών. Φαίνεται πως το σύστημα ημερομηνίας (Τοπικές Ρυθμίσεις) του Excel "μπλέκεται" με το αμερικάνικο σύστημα της VBA.

Χρησιμοποίησα συνδυασμό των CLng() και DATE() για να διορθώσω το πρόβλημα.

Δοκίμασε κι εσύ να δεις αν όλα βαίνουν καλώς.

istrios 07-02-19 19:44

Παράθεση:

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

Το έχω συναντήσει κι εγώ αυτό το πρόβλημα στην καταχώρηση των ημερομηνιών. Φαίνεται πως το σύστημα ημερομηνίας (Τοπικές Ρυθμίσεις) του Excel "μπλέκεται" με το αμερικάνικο σύστημα της VBA.

Χρησιμοποίησα συνδυασμό των CLng() και DATE() για να διορθώσω το πρόβλημα.

Δοκίμασε κι εσύ να δεις αν όλα βαίνουν καλώς.

Δουλεύει τέλεια!!!...Σε ευχαριστώ πολύ..με έσωσες γιατί ήθελα τη χρήση φίλτρου στις ημερομηνίες και αυτό το θέμα που είχα με έχει παιδέψει πάρα πολύ. . Μάλιστα το εξέλιξες και παραπάνω...Respect!!

istrios 26-02-19 14:12

1 Συνημμένο(α)
Να 'μαι πάλι!! :byebye:. Έχω ένα ερώτημα (Τι άλλο θα είχα) σχετικά με τη φόρμα. Την εξέλιξα λιγάκι σε σχέση με το προηγούμενο και εκτός των άλλων πρόσθεσα και ένα List Box στη φόρμα. Υπάρχει η δυνατότητα αν στο φύλλο εργασίας πχ. στην ημερομηνία κάνω χρήση του φίλτρου στο φύλλο φθορές αυτό να εφαρμόζεται και στο List Box;

ChrisGT7 26-02-19 20:05

Μιχάλη, μπορείς το ενεργό φίλτρο στο φύλλο Φθορές να το μεταφέρεις και στο Listbox.

Όμως αν π.χ. έχεις φίλτρο στην ημερομηνία με 26/02/2019 και καταχωρήσεις μια εγγραφή με άλλη ημερομηνία, δε θα τη δεις αμέσως στο listbox. Για να τη δεις θα πρέπει να αλλάξεις το φίλτρο με το ανάλογο κριτήριο.

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

Θες κάτι τέτοιο;

istrios 26-02-19 21:08

Παράθεση:

Αρχική Δημοσίευση από ChrisGT7 (Μήνυμα 29124)
Μιχάλη, μπορείς το ενεργό φίλτρο στο φύλλο Φθορές να το μεταφέρεις και στο Listbox.

Όμως αν π.χ. έχεις φίλτρο στην ημερομηνία με 26/02/2019 και καταχωρήσεις μια εγγραφή με άλλη ημερομηνία, δε θα τη δεις αμέσως στο listbox. Για να τη δεις θα πρέπει να αλλάξεις το φίλτρο με το ανάλογο κριτήριο.

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

Θες κάτι τέτοιο;

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

istrios 27-02-19 11:32

Παράθεση:

Αρχική Δημοσίευση από istrios (Μήνυμα 29126)
Χρήστο ωραίο ακούγεται έτσι φτάνει στη φόρμα στο πεδίο αναζήτησης με βάση των αύξων αριθμό να μπορώ να καλέσω ένα ήδη φιλτραρισμένο για τυχών διόρθωσή της εγγραφής .Το ψάχνω λίγο παραπάνω γιατί θα το χειρίζονται και άλλα τμήματα με χρήστες που ξέρουν μόνο τι θα πει πληκτρολόγιο και δεν θα ήθελα σε φόρτο εργασίας να ρωτάνε συνέχεια πως κάνω αυτό πως κάνω το άλλο γι αυτό προσπαθώ να τους τα έχω όλα στο πιάτο που λένε. Είναι όπως κάνω εγώ αυτί τη στιγμή που σας ζητάω συνεχεία έτοιμες λύσεις σε ένα αντικείμενο που κατέχω τα εντελώς βασικά μόνο, άλλα από την άλλη μαθαίνω και με έχουν ενθουσιάσει οι δυνατότητες του excel. Με τα λεγόμενα μου κρίνεις αν διευκολύνει και πράξε ανάλογα να μην καταναλώνω άδικα το χρόνο σας.

Σκέφτηκα και κάτι άλλο Χρήστο με ένα Tutorial που είδα και θέλω να μου πεις μόνο αν γίνεται άσχετα που αν πεις ναι δεν θα ξέρω:dft012: Να καταργήσω τα φίλτρα και να δημιουργήσω φύλλα εργασίας με τους μήνες Απρίλιος, Μάιος, Ιούνιος, Ιούλιος, Αύγουστος, Σεπτέμβριος, Οκτώβριος, Νοέμβριος και όταν ανοίγω τη φόρμα με μία DropDown λίστα στην κορυφή να επιλέξω σε ποιο μήνα να στείλω τα δεδομένα με την ίδια φόρμα. Οι φθορές σε αριθμό δεν πρόκειται να ξεπεράσουν σε αριθμό τις στήλες στο φύλλο οπότε δεν θα έχω ανάγκη χρήσης του φίλτρου. Είδα ένα σχετικό βίντεο αλλά είναι πολύπλοκο.

https://www.onlinepclearning.com/wp-.../dance-gif.gif

ChrisGT7 27-02-19 16:03

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

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

- Διόρθωσέ με αν κατάλαβα λάθος με αυτό που γράφεις "Οι φθορές σε αριθμό δεν πρόκειται να ξεπεράσουν σε αριθμό τις στήλες στο φύλλο". Οι στήλες στο φύλλο Φθορές είναι οκτώ, οπότε κάθε μήνα θα έχεις από οκτώ εγγραφές περίπου; Αν είναι έτσι, γιατί να έχεις τόσα φύλλα εργασίας για τόσες λίγες εγγραφές;

- Για ποιο λόγο να καταργήσεις ένα από τα πιο δυνατά εργαλεία του Excel, όπως είναι το φίλτρο; Και ειδικά όταν έχεις να κάνεις με λίστες που μπορείς πολύ εύκολα να φιλτράρεις δεδομένα και να παίρνεις πολύ γρήγορα στοιχεία, π.χ. πόσες φιάλες έσπασαν από 10/04/2019 μέχρι 25/04/2019;

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

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

istrios 27-02-19 16:31

Παράθεση:

Αρχική Δημοσίευση από ChrisGT7 (Μήνυμα 29132)
Ναι, φυσικά και γίνεται η μεταφορά δεδομένων που περιγράφεις. Και αν τα φύλλα είναι ήδη δημιουργημένα ανά μήνα όπως αναφέρεις, μπορείς κατά την καταχώρηση μιας νέας εγγραφής, ελέγχοντας την ημερομηνία φθοράς ή με ένα ξεχωριστό combo box, να στέλνεται αυτόματα στο αντίστοιχο φύλλο.

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

- Διόρθωσέ με αν κατάλαβα λάθος με αυτό που γράφεις "Οι φθορές σε αριθμό δεν πρόκειται να ξεπεράσουν σε αριθμό τις στήλες στο φύλλο". Οι στήλες στο φύλλο Φθορές είναι οκτώ, οπότε κάθε μήνα θα έχεις από οκτώ εγγραφές περίπου; Αν είναι έτσι, γιατί να έχεις τόσα φύλλα εργασίας για τόσες λίγες εγγραφές;

- Για ποιο λόγο να καταργήσεις ένα από τα πιο δυνατά εργαλεία του Excel, όπως είναι το φίλτρο; Και ειδικά όταν έχεις να κάνεις με λίστες που μπορείς πολύ εύκολα να φιλτράρεις δεδομένα και να παίρνεις πολύ γρήγορα στοιχεία, π.χ. πόσες φιάλες έσπασαν από 10/04/2019 μέχρι 25/04/2019;

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

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

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

Spirosgr 27-02-19 18:09

Καλησπέρα.
Παρακολουθώ την «συζήτηση» και θα ήθελα να σας πω μερικά πράγματα...

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

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

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

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

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

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

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

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

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

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


Η ώρα είναι 08:15.

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


Search Engine Optimization by vBSEO 3.3.2