istrios Δημοσ. 7 Φεβρουαρίου 2019 Δημοσ. 7 Φεβρουαρίου 2019 (επεξεργασμένο) Γεια σας και πάλι με νέα απορία σε άλλο τομέα αυτή τη φορά. Έχω φτιάξει μία φόρμα για εισαγωγή σε πίνακα μέσω αυτής ορισμένων δεδομένων και ειδικά καταγραφή φθορών τμημάτων. Έχω βάλει στο πεδίο κειμένου Νο2 για εισαγωγή ημερομηνίας. Όταν ανοίγω τη φόρμα και πάω να κάνω εγγραφή αν βάλω ημερομηνία στο πεδίο 7/2/2019 στο κελί την εμφανίζει 2/7/19 αν και έχω κάνει τα κελιά με μορφή ημερομηνίας ηη/μμ/εεεε . Τώρα το περίεργο είναι ότι αν βάλω μια μεταγενέστερη ημερομηνία πχ. 13/2/2017 το παίρνει κανονικά δηλαδή δεν αντιστρέφει τις ημερομηνίες από το 13 και πάνω πού είναι και οι μήνες και είναι λογικό να την αντιστρέψει γιατί θα έπρεπε να βγάζει 2/13/2019 εφόσον δεν υπάρχει 13ος μήνας. Το δοκίμασα σε Office 2013, Office 2017 και με Office 2019 και πάντα το ίδιο πρόβλημα. Αντιστρέφει τις ημερομηνίες μέχρι τον 12ο μήνα δηλαδή από dd/mm/yyyy σε mm/dd/yyyy. Δοκίμασα να βάλω κώδικα μέσα στη Userform (TextBox2.Text = Format(Now(), "Short Date") αλλά έχω το ίδιο αποτέλεσμα. Δεν ξέρω εάν είναι θέμα γενικό με VBA να έχω το ίδιο πρόβλημα με όποια userform χρησιμοποιήσω. Μέχρι Format στα Windows έφτασα. Επισυνάπτω το αρχείο μήπως μπορέσει να βοηθήσει κάποιος. Private Sub CommandButton5_Click() Dim x As Long Dim y As Long x = Sheets("Φθορές").Range("A" & Rows.Count).End(xlUp).Row For y = 2 To x If Sheets("Φθορές").Cells(y, 1).Text = TextBox16.Value Then TextBox1.Text = Sheets("Φθορές").Cells(y, 2) TextBox2.Text = Sheets("Φθορές").Cells(y, 3) TextBox3.Text = Sheets("Φθορές").Cells(y, 4) TextBox4.Text = Sheets("Φθορές").Cells(y, 5) TextBox5.Text = Sheets("Φθορές").Cells(y, 6) TextBox6.Text = Sheets("Φθορές").Cells(y, 7) TextBox7.Text = Sheets("Φθορές").Cells(y, 8) End If Next y End Sub Φθορές.xlsm Επεξ/σία 7 Φεβρουαρίου 2019 από istrios
istrios Δημοσ. 7 Φεβρουαρίου 2019 Μέλος Δημοσ. 7 Φεβρουαρίου 2019 (επεξεργασμένο) 22 ώρες πριν, istrios είπε Γεια σας και πάλι με νέα απορία σε άλλο τομέα αυτή τη φορά. Έχω φτιάξει μία φόρμα για εισαγωγή σε πίνακα μέσω αυτής ορισμένων δεδομένων και ειδικά καταγραφή φθορών τμημάτων. Έχω βάλει στο πεδίο κειμένου Νο2 για εισαγωγή ημερομηνίας. Όταν ανοίγω τη φόρμα και πάω να κάνω εγγραφή αν βάλω ημερομηνία στο πεδίο 7/2/2019 στο κελί την εμφανίζει 2/7/19 αν και έχω κάνει τα κελιά με μορφή ημερομηνίας ηη/μμ/εεεε . Τώρα το περίεργο είναι ότι αν βάλω μια μεταγενέστερη ημερομηνία πχ. 13/2/2017 το παίρνει κανονικά δηλαδή δεν αντιστρέφει τις ημερομηνίες από το 13 και πάνω πού είναι και οι μήνες και είναι λογικό να την αντιστρέψει γιατί θα έπρεπε να βγάζει 2/13/2019 εφόσον δεν υπάρχει 13ος μήνας. Το δοκίμασα σε Office 2013, Office 2017 και με Office 2019 και πάντα το ίδιο πρόβλημα. Αντιστρέφει τις ημερομηνίες μέχρι τον 12ο μήνα δηλαδή από dd/mm/yyyy σε mm/dd/yyyy. Δοκίμασα να βάλω κώδικα μέσα στη Userform (TextBox2.Text = Format(Now(), "Short Date") αλλά έχω το ίδιο αποτέλεσμα. Δεν ξέρω εάν είναι θέμα γενικό με VBA να έχω το ίδιο πρόβλημα με όποια userform χρησιμοποιήσω. Μέχρι Format στα Windows έφτασα. Επισυνάπτω το αρχείο μήπως μπορέσει να βοηθήσει κάποιος. x = y.Range("B" & Rows.Count).End(xlUp).Row With y .Cells(x + 1, "B").Value = TextBox1.Text .Cells(x + 1, "C").Value = Format(Now(), "Short Date") .Cells(x + 1, "D").Value = TextBox3.Text .Cells(x + 1, "E").Value = TextBox4.Text .Cells(x + 1, "F").Value = TextBox5.Text .Cells(x + 1, "G").Value = TextBox6.Text .Cells(x + 1, "H").Value = TextBox7.Text End With 'clear the data TextBox1.Text = "" TextBox2.Text = Format(Now(), "Short Date") TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox7.Text = "" End Sub Private Sub CommandButton4_Click() Dim x As Long Dim y As Long x = Sheets("Φθορές").Range("A" & Rows.Count).End(xlUp).Row For y = 2 To x If Sheets("Φθορές").Cells(y, 1).Text = TextBox16.Value Then Sheets("Φθορές").Cells(y, 2) = TextBox1.Text Sheets("Φθορές").Cells(y, 3) = TextBox2.Text Sheets("Φθορές").Cells(y, 4) = TextBox3.Text Sheets("Φθορές").Cells(y, 5) = TextBox4.Text Sheets("Φθορές").Cells(y, 6) = TextBox5.Text Sheets("Φθορές").Cells(y, 7) = TextBox6.Text End If Next y Unload Me UserForm1.Show End Sub Private Sub CommandButton5_Click() Dim x As Long Dim y As Long x = Sheets("Φθορές").Range("A" & Rows.Count).End(xlUp).Row For y = 2 To x If Sheets("Φθορές").Cells(y, 1).Text = TextBox16.Value Then TextBox1.Text = Sheets("Φθορές").Cells(y, 2) TextBox2.Text = Sheets("Φθορές").Cells(y, 3) TextBox3.Text = Sheets("Φθορές").Cells(y, 4) TextBox4.Text = Sheets("Φθορές").Cells(y, 5) TextBox5.Text = Sheets("Φθορές").Cells(y, 6) TextBox6.Text = Sheets("Φθορές").Cells(y, 7) TextBox7.Text = Sheets("Φθορές").Cells(y, 8) End If Next y End Sub Private Sub UserForm_Initialize() TextBox2.Text = Format(Now(), "Short Date") End Sub Φθορές.xlsm Βρέθηκε τελικά η λύση από άτομο σε φόρουμ που ειδικεύεται αποκλειστικά με Office και τα σχετικά. Ο σωστός κώδικας είναι: Format(CLng(CDate(.Cells(y, 3))), "dd/mm/yy" μήπως χρειαστεί σε κάποιον. Σιγά μην το έβρισκα διαφορετικά με αυτή την πολυπλοκότητα Επεξ/σία 7 Φεβρουαρίου 2019 από istrios
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα