Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Γεια σας και πάλι με νέα απορία σε άλλο τομέα αυτή τη φορά. Έχω φτιάξει μία φόρμα για εισαγωγή σε πίνακα μέσω αυτής ορισμένων δεδομένων και ειδικά καταγραφή φθορών τμημάτων. Έχω βάλει στο πεδίο κειμένου Νο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

Επεξ/σία από istrios
Δημοσ. (επεξεργασμένο)
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" μήπως χρειαστεί σε κάποιον. Σιγά μην το έβρισκα διαφορετικά με αυτή την πολυπλοκότητα :)

Επεξ/σία από istrios

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...