Tôi không có control CA nên không biết nó là gì, nhưng nếu CA.Value trả về ngày tháng thì:
1. Sửa thành
Mã:
Private Sub CA_Click()
ngay.Value = Format(CA.Value, "Short Date")
CA.Visible = False
End Sub
2. Trong Sub CommandButton1_Click sửa thành
Mã:
LastRow.Offset(1, 0).Value = CDate(ngay.Value)
-------------
Nếu bạn không dùng calendar mà tự gõ thì bạn phải biết cách gõ ngày tháng cho chuẩn. Tùy thiết lập của từng máy mà ngày sẽ đi trước hay năm đi trước hay gì đó, dấu phân cách là "-" hay "/" hay gì đó.
Private Sub CommandButton1_Click()
Range("A1").Value = CDate(TextBox1.Value)
End Sub
Private Sub TextBox1_AfterUpdate()
TextBox1 = Format(Me.TextBox1.Value, "dd/MM/yyyy")
End Sub
Giả sử bạn muốn nhập ngày 4 tháng 5 năm 2017. Bạn sẽ gõ 04/05/2017. Sau đó bạn nhấn CommandButton1 và trong A1 thấy 04/05/2017. Theo thiết lập trên máy của bạn thì đó là ngày 04 tháng 05 năm 2017. Tức đúng ý.
Bạn gửi tập tin cho đồng nghiệp Mỹ. Anh này cũng nhập liệu mấy chục năm và luôn gõ thang/ngay/nam. Anh ta muốn nhập ngày 4 tháng 5 năm 2017 và sẽ gõ 05/04/2017. Sau khi nhấn CommandButton1 anh ta có A1 = 4/5/2017. Theo thiết lập trên máy anh ta thì đó là ngày 05 tháng 4 năm 2017. Tức không đúng ý.
Theo tôi thì nếu dùng TextBox mà không dùng calendar thì phải biết cách gõ - hướng dẫn cho mình và cho mọi người cách gõ, thứ tự gõ. Vì thế tôi đề nghị