Giải thích giúp em hàm sửa ngày!

Liên hệ QC

adult

Thành viên hoạt động
Tham gia
2/12/07
Bài viết
193
Được thích
30
Em có tìm được 1 đoạn code sửa ngày nhưng em kô hiểu tại sao ta phải dùng đến hàm này, và khi nào thì chúng ta cần đến hàm này. Các anh chị có thể giúp em giải thích và làm 1 ví dụ nhỏ để chứng tỏ sự khác biệt khi dùng và kô dùng hàm này kô ạh (hix, please đừng quăng cho em 1 file hỗn tạp rồi bắt em mò nhé). Chỉ 1 vídụ nhỏ chắc cũng kô mất nhiều time của các anh chị đâu hen.
Xin chân thành cámo ơn!!!
Và đây là đoạn code em sưu tầm (sorry vì quên mất tên tác giả rồi)
Mã:
Public Function SuaNgay(NgayBatKy)
1  If Not IsDate(NgayBatKy) Then
  'MsgBox "Ngaøy khoâng hôïp leä"
2  SuaNgay = ""
 Else
4  WorkString = NgayBatKy
  Wposition = InStr(1, WorkString, "/")
6  WDD = Left(WorkString, Wposition - 1)
  WorkString = Mid(WorkString, Wposition + 1)
8  Wposition = InStr(1, WorkString, "/")
  If Wposition = 0 Then
10   WMM = WorkString: WYY = Year(Date)
  Else
12   WMM = Left(WorkString, Wposition - 1)
   WYY = Mid(WorkString, Wposition + 1)
14  End If
  SuaNgay = DateSerial(WYY, WMM, WDD)
16 End If
End Function
 
Theo tôi hàm này dùng để convert ngày tháng dạng text sang dạng Date
Bạn có thể thí nghiệm để kiểm chứng
 
Upvote 0
Nói thêm cho rõ

Hàm này đúng là biến chuỗi kiểu ngày sang giá trị ngày mà nó biểu thị.
Dạng chuỗi có thể là 'DD/MM/YYYY' hay chỉ là 'd/m'
Nếu ta nhập dạng sau cùng, thì hàm gắn thêm năm đương thời vô để có giá trị ngày hoàn chỉnh.
Hàm này còn có thể sửa lại 1 vài dòng lệnh!
 
Upvote 0
Hàm này đúng là biến chuỗi kiểu ngày sang giá trị ngày mà nó biểu thị.
Hàm này còn có thể sửa lại 1 vài dòng lệnh!
Ý bác là sao ạh, sửa là sửa như thế nào, bác có thể nói cụ thể không ạh, hàm trên bị lỗi gì hay sao?
Xin chân thành cám ơn!!!
 
Upvote 0
Có thể hiểu nôm na như vầy.
Nếu ô A1 định dạng ngày là tháng/ngày/năm mà bạn lỡ gõ ngày/tháng/năm thì máy tính sẽ cho đó là Text.
Việc của hàm này là sữa lại cho đúng định dạng.
Tại ô B1 bạn gõ =SuaNgay(A1) thì sẽ có kết quả là tháng/ngày/năm, vậy thôi!
Nếu là Text thì sẽ được canh trái, còn đúng là ngày thì sẽ được canh phải.
 
Lần chỉnh sửa cuối:
Upvote 0
Có lẽ ý sư phụ Sa muốn tối ưu hóa code hay phát hiện điều gì đó chưa ổn trong code cũng không chừng!
Đợi sư phụ lên tiếng vậy (nhìn nãy giờ vẩn chưa phát hiện ra điều gì chưa ổn)
Kính mong sư phụ "bật mí"
 
Upvote 0
Nhập ngày tháng năm thì có thể phân cách là " / " hoặc " - "
Nhưng hiện tại nếu nhập phân cách là " - " thì báo lỗi, mới chỉ đúng khi phân cách là " / "

CÁC BÁC XỬ LÝ NỐT NHA ~(^_^)~
 
Upvote 0
Bác SA_DQ đâu rồi nhỉ, bác có thể cho em biết code trên bị lỗi gì kô ạh? Thanks bác

Sa_DQ: Thì BoyXin đã nói rồi í thôi;
Bạn thử sức 1 vài ngày xem thử
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Em có tìm được 1 đoạn code sửa ngày nhưng em kô hiểu tại sao ta phải dùng đến hàm này, và khi nào thì chúng ta cần đến hàm này. Các anh chị có thể giúp em giải thích và làm 1 ví dụ nhỏ để chứng tỏ sự khác biệt khi dùng và kô dùng hàm này kô ạh (hix, please đừng quăng cho em 1 file hỗn tạp rồi bắt em mò nhé). Chỉ 1 vídụ nhỏ chắc cũng kô mất nhiều time của các anh chị đâu hen.
Xin chân thành cámo ơn!!!
Và đây là đoạn code em sưu tầm (sorry vì quên mất tên tác giả rồi)
Mã:
Public Function SuaNgay(NgayBatKy)
1  If Not IsDate(NgayBatKy) Then
  'MsgBox "Ngaøy khoâng hôïp leä"
2  SuaNgay = ""
 Else
4  WorkString = NgayBatKy
  Wposition = InStr(1, WorkString, "/")
6  WDD = Left(WorkString, Wposition - 1)
  WorkString = Mid(WorkString, Wposition + 1)
8  Wposition = InStr(1, WorkString, "/")
  If Wposition = 0 Then
10   WMM = WorkString: WYY = Year(Date)
  Else
12   WMM = Left(WorkString, Wposition - 1)
   WYY = Mid(WorkString, Wposition + 1)
14  End If
  SuaNgay = DateSerial(WYY, WMM, WDD)
16 End If
End Function
Tôi cũng đọc 1 doan code giôngnhứ vậy nhwng khi lám theo và thử lại lai không chạy mong các bạn giúp mình giải thích vậy. thật sự mình không biết dọc doạn code này.
 
Upvote 0
Web KT
Back
Top Bottom