Code có vấn đề hay tại định dạng

Liên hệ QC

hoangtuankhanh

Thành viên mới
Tham gia
18/3/08
Bài viết
31
Được thích
1
Nghề nghiệp
looking......
Các bác xem hộ em xem tại sao tại ô lưu ngày tháng của em khi muốn lưu thì bị nhảy tháng thành ngày và ngày thành tháng nếu đó là ngày từ 01=>10 còn từ 10 đổ ra thì lại ko bị thế nữa.
 

File đính kèm

Các bác xem hộ em xem tại sao tại ô lưu ngày tháng của em khi muốn lưu thì bị nhảy tháng thành ngày và ngày thành tháng nếu đó là ngày từ 01=>10 còn từ 10 đổ ra thì lại ko bị thế nữa.
Là do code chứ không phải do định dạng.
Đoạn code này:
PHP:
Range("NgayCtu1") & "/" & Range("ThangCtu1") & "/" & Range("NamCtu1")
Sẽ tạo ra một chuỗi dạng AA/BB/CCCC. Vì VBA định dạng ngày tháng theo kiểu mm/dd/yyyy nên nếu AA <= 12 thì VBA sẽ hiểu chuỗi này là một ngày tháng, nếu AA > 12 thì VBA sẽ hiểu đây là một chuỗi.
Đây là cách khắc phục:
Thay dòng này:
PHP:
Sheets("Tong hop PC").Cells(MyRow, 1) = Range("NgayCtu1") & "/" & Range("ThangCtu1") & "/" & Range("NamCtu1")
Bằng dòng này:
PHP:
Sheets("Tong hop PC").Cells(MyRow, 1) = DateSerial([NamCtu1], [ThangCtu1], [NgayCtu1])
 
Là do code chứ không phải do định dạng.
Đoạn code này:
PHP:
Range("NgayCtu1") & "/" & Range("ThangCtu1") & "/" & Range("NamCtu1")
Sẽ tạo ra một chuỗi dạng AA/BB/CCCC. Vì VBA định dạng ngày tháng theo kiểu mm/dd/yyyy nên nếu AA <= 12 thì VBA sẽ hiểu chuỗi này là một ngày tháng, nếu AA > 12 thì VBA sẽ hiểu đây là một chuỗi.
Đây là cách khắc phục:
Thay dòng này:
PHP:
Sheets("Tong hop PC").Cells(MyRow, 1) = Range("NgayCtu1") & "/" & Range("ThangCtu1") & "/" & Range("NamCtu1")
Bằng dòng này:
PHP:
Sheets("Tong hop PC").Cells(MyRow, 1) = DateSerial([NamCtu1], [ThangCtu1], [NgayCtu1])

Tôi nghĩ không cần vất vả thế đâu, chỉ cần vào Control Panel/Regional and Langugae Option\Regional Option\Customize\Date\Short Date format chọn định dạng dd\mm\yyyy là được thôi mà.
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    153.8 KB · Đọc: 37
Tôi nghĩ không cần vất vả thế đâu, chỉ cần vào Control Panel/Regional and Langugae Option\Regional Option\Customize\Date\Short Date format chọn định dạng dd\mm\yyyy là được thôi mà.
Bạn đã thử chưa? Có chắc là làm như thế sẽ được không??
Hãy suy nghĩ kỹ trước khi phát biểu.
 
Đến bạn huuthang_bd, bạn có thể hướng dẩn hoặc giải thích thêm về hàm này không?
= DateSerial([NamCtu1], [ThangCtu1], [NgayCtu1])
Tôi đã tìm hiểu trên diển đàn rồi mà không thông chút nào. Cám ơn bạn trước.
 
Đến bạn huuthang_bd, bạn có thể hướng dẩn hoặc giải thích thêm về hàm này không?

Tôi đã tìm hiểu trên diển đàn rồi mà không thông chút nào. Cám ơn bạn trước.
Hàm DateSerial() trong VBA giống với hàm Date() trong excel. Hai hàm này sẽ trả về giá trị là một ngày nào đó.
Cú pháp:
DateSerial(Year, Month, Day)
Date(Year, Month, Day)
Còn NamCtu1, ThangCtu1, NgayCtu1 là các name tác giả đặt cho các ô thể hiện năm, tháng, ngày.
 
Thật kỳ lạ! Ta nên nhớ rằng NGÀY THÁNG luôn là NUMBER ---> Sao lại cứ dùng các hàm nối chuổi để xử lý ---> Ai dùng cách này chứng tỏ chưa hiểu tí gì về DATE
Trên GPE đã từng nói rất nhiều lần, sao vẫn có nhiều người phạm sai lầm nhỉ?
------------
Chỉ có 1 cách nối chuổi duy nhất được Excel chấp nhận, đó là : NĂM & "/" & THÁNG &"/" & NGÀY ... bất chấp mọi setting trong Control Panel
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom