nhập dữ liệu ngày tháng đúng định dạng từ userform lên file excel

Liên hệ QC

viettho

Thành viên hoạt động
Tham gia
4/7/11
Bài viết
120
Được thích
24
Xin chào mọi người
Hiện tại, tôi đang muốn nhập dữ liệu ngày tháng từ userform (button input data) lên excel đúng định dạng dd/mm/yyyy. Do tôi có sử dụng đoạn code để tổng hợp dữ liệu (button report) từ ngày > đến ngày tuỳ chọn, nhưng khi nhập ngày tháng năm từ userform thì khi tổng hợp dữ liệu thì không tìm thấy dữ liệu vừa nhập, còn nhập ngày tháng trực tiếp trên excel thì công thức hoạt động bình thường
Xin mọi người hỗ trợ giúp
 

File đính kèm

  • SENDING FOREIGN POSTAGE updated 18.10.17.xlsm
    451.2 KB · Đọc: 24
Bạn cho các trang tính "trốn tìm" hết mất tiêu rồi, giúp được cái gì đây?

Thường ta cần lo nội dung cho trơn tru đã; Bằng ngược lại sẽ tốn thời gian trong các thao tác & vận hành thử CSDL lắm.

Chào tạm biệt!
 
Upvote 0
Em gởi lại file các anh giúp dùm em nhé
Thanks
 

File đính kèm

  • SENDING FOREIGN POSTAGE updated 18.10.17.xlsm
    448.1 KB · Đọc: 36
Upvote 0
Thử thay xem sao.LastRow.Offset(1, 0).Value = DateSerial(Year(ngay), Month(ngay), Day(ngay))
 
Upvote 0
Hiện tại, tôi đang muốn nhập dữ liệu ngày tháng từ userform (button input data) lên excel đúng định dạng dd/mm/yyyy.
Bạn không thể bắt phải là dạng dd/mm/yyyy. Vì nếu bạn gửi tập tin cho tôi - đối tác của bạn, đồng nghiệp của bạn, người sẽ thừa kế code của bạn khi bạn bỏ việc - thì trong 'Nhap lieu'!A tôi sẽ có text chứ không phải ngày tháng. Vì máy tôi thiết lập là 2017-10-24 chứ không phải là 24/10/2017.

Nhiệm vụ của bạn là nhập đúng là ngày tháng, còn dạng thế nào là do thiết lập của sysyem.

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ì đó.

Cách tốt nhất để nhắc bài là gợi ý / hướng dẫn cách nhập. Vd. nhập ngày tháng vào TextBox1 thì:
1. Trong Sub UserForm_Initialize thêm dòng
Mã:
TextBox1.Value = Format(DateSerial(Year(Date), 1, 31), "Short Date")

2. Khi muốn nhập ngày tháng xuống sheet thì vd.
Mã:
Range("A1").Value = CDate(TextBox1.Value)
 
Upvote 0
Trong Userform em dùng code này thì có sai không Thầy batman1:
Mã:
Private Sub ngay1_AfterUpdate()
    ngay1 = Format(Me.ngay1.Value, "dd/MM/yyyy")
End Sub
và tất nhiện phải có:
Mã:
Range("A1").Value = CDate(ngay1.Value)
em thấy nhập vào sheet đúng định dạng Date ah.
 
Upvote 0
Trong Userform em dùng code này thì có sai không Thầy batman1:
Mã:
Private Sub ngay1_AfterUpdate()
    ngay1 = Format(Me.ngay1.Value, "dd/MM/yyyy")
End Sub
và tất nhiện phải có:
Mã:
Range("A1").Value = CDate(ngay1.Value)
em thấy nhập vào sheet đúng định dạng Date ah.
Code trên chạy không ổn định, nếu đem qua máy tính khác mà định dạng của window là m/d/yyyy là sẽ cho kết quả sai.
 
Upvote 0
Trong Userform em dùng code này thì có sai không Thầy batman1:
Mã:
Private Sub ngay1_AfterUpdate()
    ngay1 = Format(Me.ngay1.Value, "dd/MM/yyyy")
End Sub
và tất nhiện phải có:
Mã:
Range("A1").Value = CDate(ngay1.Value)
em thấy nhập vào sheet đúng định dạng Date ah.
Tôi chỉ muốn nói là khi bạn ngồi vào máy bất kỳ (sang nhà người khác?) thì bạn phải biết cách nhập đúng ngày tháng. Vì thế tôi dùng
Mã:
TextBox1.Value = Format(DateSerial(Year(Date), 1, 31), "Short Date")
Là để gợi ý cách nhập cho chuẩn. Sang máy nào thì cũng có gợi ý thích hợp.
Tôi không hiểu sao mọi người cứ bắt phải format cái đã nhập, và dứt khoát phải là dd/mm/yyyy?

Tôi thử xét thế này, không dám nói là đúng. Bạn có code
Mã:
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

Máy của bạn thiết lập dd/mm/yyyy. Bạn nhập liệu mấy năm rồi và toàn gõ ngay/thang/nam

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ị
Mã:
TextBox1.Value = Format(DateSerial(Year(Date), 1, 31), "Short Date")
Còn bạn muốn làm thế nào là quyền của bạn. Tôi không có thời gian và hứng giải thích nhiều.

Tất nhiên tôi cũng có thể nhầm lẫn. Ai thấy dùng được thì dùng. Không có chuyện bắt buộc gì ở đây. Muốn khỏi lo nghĩ thì dùng calendar.
 
Lần chỉnh sửa cuối:
Upvote 0
Em cám ơn sự trợ giúp của mọi người rất nhiều, em đã làm được rồi ạ
 
Upvote 0
Web KT
Back
Top Bottom