Ngày dưới 12 tự động bị đảo ngược ngày thành tháng (4 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hoangthang8907

Thành viên mới
Tham gia
24/4/19
Bài viết
22
Được thích
2
m.n cho mình hỏi, vì sao khi mình nhập ngày tháng bằng form nhập liệu thì khi ngày nhỏ hơn 13 ( ngày 01-12) lại bị đảo ngược thành tháng. nếu nhập trực tiếp từ bản phím thì lại không sao. định dạng của ô cell mình đã để là dd/mm/yyy rồi. Chỉ khi nhập ngày tháng qua from nhập liệu thì mới bị tình trạng đó. có ai biết cách khắc phục k ạ
 
m.n cho mình hỏi, vì sao khi mình nhập ngày tháng bằng form nhập liệu thì khi ngày nhỏ hơn 13 ( ngày 01-12) lại bị đảo ngược thành tháng. nếu nhập trực tiếp từ bản phím thì lại không sao. định dạng của ô cell mình đã để là dd/mm/yyy rồi. Chỉ khi nhập ngày tháng qua from nhập liệu thì mới bị tình trạng đó. có ai biết cách khắc phục k ạ
Định dạng trong ô Excel là 1 chuyện, ngày tháng trong Form nhập liệu là 1 chuyện và ngày tháng trong máy tính là chuyện khác.
Bạn đưa file lên xem sao.
 
Định dạng trong ô Excel là 1 chuyện, ngày tháng trong Form nhập liệu là 1 chuyện và ngày tháng trong máy tính là chuyện khác.
Bạn đưa file lên xem sao.
đây anh, a xem hộ em , ngày trong form và máy tính cũng đang để là dd/mm/yyyy nhưng khi nhập ngày cứ nhỏ hơn 13 là bị đảo ngược ạ. em bấm vào nút cập nhật để lấy ngày tháng trên máy tính
 

File đính kèm

đây anh, a xem hộ em , ngày trong form và máy tính cũng đang để là dd/mm/yyyy nhưng khi nhập ngày cứ nhỏ hơn 13 là bị đảo ngược ạ. em bấm vào nút cập nhật để lấy ngày tháng trên máy tính
Dòng nào đó trong code: = NgayXuat.Text
Sửa thành: = DateSerial(Year(NgayXuat.Text), Month(NgayXuat.Text), Day(NgayXuat.Text))
 
Dòng nào đó trong code: = NgayXuat.Text
Sửa thành: = DateSerial(Year(NgayXuat.Text), Month(NgayXuat.Text), Day(NgayXuat.Text))
Tôi không có điều kiện để thử, Nhưng xin hỏi khi chuyển thành định dạng Text như vậy thì những phần tính toán có điều kiện kèm theo là ngày tháng năm sẽ không thực hiện được vậy phải xử lý thế nào ? Xin cảm ơn
 
Không nên tạo ngày và gán trực tiếp như thế này để gán vào ô Excel
DateSerial(Year(NgayXuat.Text), Month(NgayXuat.Text), Day(NgayXuat.Text))
Dòng mã này sai ở chỗ: TextBox.Text là chuỗi 9/9/2024, không phải là thời gian. Tùy thuộc vào thiết lập định dạng thời gian trong System. Khi gọi CDate(TextBox.Text) Số 9 ở giữa có thể bị chuyển thành ngày hoặc tháng.

Vì ô Excel và thời gian trong VBA là hai định nghĩa khác nhau hoàn toàn. Excel phụ thuộc thiết lập. VBA là theo một chuẩn duy nhất.
Thời gian trong ô Excel được chuyển đổi phụ thuộc vào chuyển đổi tiêu chuẩn được thiết lập.

Hãy định dạng ô sẽ gán thời gian là định dạng ngày tháng.
Sau đó gán thành giá trị được tạo theo 2 cách sau:

1. Theo định dạng chuẩn yyyy/mm/dd hh:mm:ss: năm/tháng/ngày giờ/phút/giây

JavaScript:
   Dim s
   s =Split(TextBox1.Text, "/")
   cell.value = s(2) & "/" & s(1) & "/" & s(0)

2. Chuyển thời gian thành số trước khi gán:
JavaScript:
   Dim s
   s =Split(TextBox1.Text, "/")
   cell.value =CDbl(DateSerial(s(2), s(1), s(0)))

Dựa vào 2 cách này thì gán thời gian sẽ không bao giờ gặp lỗi như trên.
 
Web KT

Bài viết mới nhất

Back
Top Bottom