Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Excel07] "Δημιουργία" ημερομηνίας (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/2040-dimioyrgia-imerominias.html)

athfot 10-09-12 19:34

"Δημιουργία" ημερομηνίας
 
Καλησπέρα σε όλους,
Θα ήθελα ακόμα μια φορά την βοήθειά σας σε ένα πρόβλημα που προσπαθώ να επιλύσω με την βοήθεια της VBA.
Σέ ένα φύλλο εργασίας μέσω ενός UserForm και τριών ListBox δίνω στο κελλί Α1 τον αριθμό π.χ 3(είναι ημέρα μηνός), στο Β1 τον αριθμό π.χ. 9(είναι ο μήνας) και στο κελλί C1 τον αριθμό π.χ. 2012(είναι το έτος). Και τα τρία αυτά κελλιά έχουν μορφοποίηση "Γενική".
Το ζητούμενο είναι αν με μία συνάρτηση μπορώ να δώσω σε ένα άλλο κελλί π.χ. στο D1 την τιμή 3/9/2012 (Α1/Β1C1) δηλαδή μια ημερομηνία της μορφής η/μ/εεεε.
Σας ευχαριστώ

Spirosgr 10-09-12 23:01

1 Συνημμένο(α)
Καλησπέρα
Βάλε στο κελί D1
Κώδικας:

=CONCATENATE(A1;"/";B1;"/";C1) ή ακόμα και =A1&"/"&B1&"/"&C1
και μορφοποίησε σε ημερομηνία

gr8styl 11-09-12 00:03

Συνονόματε, για δοκίμασε και την
=DATE(C1;B1;A1)
την μορφοποίηση της ημερομηνίας την ορίζεις όπως θέλεις πριν ή μετά για το κελί που περιέχει τον τύπο.

Θανάσης

athfot 11-09-12 18:38

1 Συνημμένο(α)
Καλησπέρα σε όλους,
Σας ευχαριστώ για την γρήγορη απάντησή σας.
Θανάση, χρησιμοποιώντας τη DATE έχω την ημερομηνία όπως την θέλω δηλαδή να αναγνωρίζεται από το σύστημα σαν ημερομηνία και να εκτελώ πράξεις με αυτήν.
Σπύρο, όπως θα δείς στο συνημμένο, ενώ έχω το αποτέλεσμα όπως το ζητούσα δηλ. 3/9/2012, παρ' όλα αυτά ακόμα και με μορφοποίηση ημερομηνίας δεν αναγνωρίζεται σαν τέτοια.
Θανάσης

Spirosgr 11-09-12 19:38

Καλησπέρα
Φίλε Θανάση φυσικά και δεν αναγνωρίζει την 30/2/2012 και την 35/15/2012 που έβαλες !!!!!!!

athfot 11-09-12 21:19

Καλησπέρα,
Σπύρο, σ' ευχαριστώ για την άμεση ανταπόκριση.
Χρησιμοποιώντας το "ακραίο" παράδειγμα 35/15/2012 ήθελα να δείξω ότι (κατά τη γνώμη μου) δεν αναγνωρίζεται σαν ημερομηνία, διότι κανονικά, από τις λίγες γνώσεις που έχω, θα έπρεπε να εμφανίζει στο κελλί 4/4/2012. Αυτό κυρίως έχει να κάνει, όπως είναι γνωστό, με τον Φεβρουάριο και τα δίσεκτα έτη. Δηλαδή εαν κάποιος δώσει τις τιμές Α1=29, Β1=2,C1=2011 (μη γνωρίζοντας οτι το 2011 δεν είναι δίσεκτο) τότε θα εμφανιστεί η τιμή 29/2/2011 αντί της σωστής 1/3/2011.
Διαπίστωσα όμως παρ' όλα αυτά, οτι εφ'όσον δοθούν στα κελλιά Α1,Β1,C1 τιμές εντός φυσιολογικών ορίων για την ημέρα, το μήνα και το έτος, τότε στην τιμή του D1 είναι δυνατόν να εκτελείς πράξεις όπως π.χ. αφαίρεση, πρόσθεση ημερών κλπ. Αντίθετα στο προηγούμενο παράδειγμα "29/2/2011" εαν προσθέσεις 2 ημέρες το αποτέλεσμα είναι #ΤΙΜΗ.
Θανάσης

Spirosgr 12-09-12 00:40

1 Συνημμένο(α)
Καλημέρα
δες το φύλλο και βάλε τις 2 βοηθητικές στήλες με τους τύπους τους
Κάνε validation στην Α στήλη όπως το παράδειγμα
γράψε έτος και μήνα και προσπάθησε να βάλεις 30/2ου ή 31/4ου ή 29/2/2011
δες το αποτέλεσμα
καλή συνέχεια!

athfot 12-09-12 16:28

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

Θα ήθελα όμως να σας ρωτήσω κάτι επιπλέον, εφόσον δεν κάνω κατάχρηση της καλοσύνης σας (το αναφερω και στο αρχικό μήνυμα).
Έχω γράψει μια απλή συνάρτηση VBA με την οποία παίρνουν τα κελλιά Α1,Β1,C1 τις τιμές.
Δεν γνωρίζω πως να την συμπληρώσω ώστε να δίνει στο κελλί D1 την ημερομηνία.
Σας παραθέτω την συνάρτηση:

Sub GetDay()
Worksheets("Φύλλο1").Select
Range("A1").Value = UserForm1.ListBox1.Value
Range("B1").Value = UserForm1.ListBox2.Value
Range("C1").Value = UserForm1.ListBox3.Value

'Range("D1").Value=Date(A1;B1;C1)
End Sub


Παρά τις προσπάθειές μου (με διάφορες παραλλαγές) δεν μπόρεσα να δώσω την τιμή στο D1.
Κάθε βοήθεια θα ήταν ευπρόσδεκτη.
Σας ευχαριστώ
Θανάσης

gr8styl 12-09-12 17:22

Παράθεση:

Αρχική Δημοσίευση από athfot (Μήνυμα 12023)
...Θα ήθελα όμως να σας ρωτήσω κάτι επιπλέον, ....

Συνονόματε, βάλε
Range("d1").Value = DateSerial(Range("c1"), Range("b1").Value, Range("a1").Value)
αντί
'Range("D1").Value=Date(A1;B1;C1)

Καλή συνέχεια
Θανάσης.
ΥΓ
Εγώ δεν κατάλαβα σε τι χρειάζονται οι βοηθητικές στήλες κλπ όταν η δουλειά γίνεται με την DATE απλά :hmm:

Spirosgr 12-09-12 17:35

Φίλε Θανάση (gr8styl)
οι στήλες αυτές δεν έχουν να κάνουν με τον τύπο που θα χρησιμοποιηθεί
μπορεί να βάλει την date άνετα και συμφωνώ μαζί σου
οι στήλες αυτές βρίσκουν την 1η και την τελευταία μέρα του μήνα που γράφουμε ανάλογα με το έτος ώστε να μην ξεφεύγει από τα όρια κάποιος και γράψει κατά λάθος 29/2/2011 που δεν ισχύει.
Χρησιμεύουν στην επικύρωση...και μόνο
φιλικά Σπύρος


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

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


Search Engine Optimization by vBSEO 3.3.2