gõ 6 số ra ngày tháng năm trong textbox

Liên hệ QC

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
946
Được thích
172
Giới tính
Nữ
Chào các anh chị. Em có textbox ngày trong Userform, em muốn chỉ gõ 6 số và enter là ra ngày tháng năm được không ạ.
Ví dụ như em gõ:
310719 enter thì ra ngày 31/07/2019
030819 enter thì ra ngày 03/08/2019.
Mong các anh chị chỉ giáo ạ.
 
Ở bài #15 tôi dùng hàm DateSerial vì nó tiện lợi.
Trong trường hợp không muốn dùng hàm này (ví dụ ngôn ngữ tổng quát) thì cái thuật toán xét xem d,m,y có phải là ngày tháng hay không là một thuật toán căn bản, vỡ lòng của lập trình. Nó gồm một hàm tính xem tháng ấy có bao nhiêu ngày, và xét xem ngày có nằm trong khoảng ấy.

Mã:
Function NumOfDaysInMonth(m As Integer, y As Integer) As Integer
' hàm tính số ngày tối đa trong tháng
' nếu tháng năm ngoài giới hạn 1-12 thì nó trả về 0
Select Case m
  Case 1, 3, 5, 7, 8, 10, 12
    NumOfDaysInMonth = 31
  Case 4, 6, 9, 11
    NumOfDaysInMonth = 30
  Case 2 ' tháng 2 hơi rắc rối
    If y Mod 4 Then
      NumOfDaysInMonth = 28 ' không phải năm nhuần
    Else If y Mod 100 = 0 And y Mod 400 <> 0 Then
      NumOfDaysInMonth = 28 ' năm thế kỷ không phải năm nhuần, trừ năm 4 thế kỷ
    Else
      NumOfDaysInMonth = 29
    End If
  Case Else
    NumOfDaysInMonth = 0 ' không phải đúng tháng
End Select
End Function

Function IsValidDMY(d As Integer, m As Integer, y As Integer) As Boolean
If d < 1 Then Exit Function
If d > NumOfDaysInMonth(m, y) Then Exit Function
NumOfDaysInMonth = True
End Function
 
Upvote 0
Em có thử code của anh @HeSanbi thì thấy cũng hay. Nhưng vì chưa có code kiểm tra tháng 2 và tháng chẵn lẻ nên còn lỗi.Ví dụ gõ 290219hay 310619.vv..

Chút góp ý cho em là nên vẽ ra giấy cái Form xử lý (có các control) và dự kiến tất cả các trường hợp thao tác, bẫy lỗi có thể phát sinh khi người dùng nhập liệu (phải giả thiết là người nhập không biết gì về vi tính chỉ nhìn theo giao diện, ghi chú, hướng dẫn mà thao tác thôi). Sau đó em mới đưa các yêu cầu, điều kiện xử lý đầy đủ hơn và người viết code cho em có cái nhìn tổng thể để đưa vào code xử lý toàn diện, thay vì cứ lắc nhắc sửa code, xử lý từng cái yêu cầu phát sinh.
Ví dụ: đối với textbox [Ngày].
Nếu sau này đó em có cái Form với 2 textbox [Từ Ngày] , [Đến Ngày] và em lại muốn bẫy lỗi: sau khi nhập ngày, phải kiểm tra thêm tính hợp lệ của [Từ Ngày] phải <= [Đến Ngày] --> Khi đó ngoài cái bộ code chuyển đổi ngày tháng bên trên còn phải thêm vô code bẫy lỗi mới này nữa và lại sửa code tiếp.
Túm lại: nên lường trước các yêu cầu, điều kiện có thể có rồi đưa lên một lần để tìm kiếm giải pháp tổng thể hơn.
 
Upvote 0
Em đang muốn chuyển cho giống file Access mà anh làm cho em đó mà, tại file Access của anh em thấy hơi trục trặc trong lúc gõ tìm tên phụ liệu đó anh. Nếu được anh có thể giúp em nhập liệu trên Form Excel mà lấy và nạp dữ liệu vào Access.
 
Upvote 0
Em đang muốn chuyển cho giống file Access mà anh làm cho em đó mà, tại file Access của anh em thấy hơi trục trặc trong lúc gõ tìm tên phụ liệu đó anh. Nếu được anh có thể giúp em nhập liệu trên Form Excel mà lấy và nạp dữ liệu vào Access.

:) Userform Excel và xử lý code kiết bên Excel anh không rành lắm em à. Lâu lâu lọt chọt ý kiến ý cò vô vài cái đơn giản thôi em à.
 
Lần chỉnh sửa cuối:
Upvote 0
Em đang muốn chuyển cho giống file Access mà anh làm cho em đó mà, tại file Access của anh em thấy hơi trục trặc trong lúc gõ tìm tên phụ liệu đó anh. Nếu được anh có thể giúp em nhập liệu trên Form Excel mà lấy và nạp dữ liệu vào Access.
Cái vụ ngày tháng này khó thì không khó, dễ thì không dễ, nếu bạn làm chương trình, thì theo mình nghĩ chỉ có cách bắt người sài nhập ngày tháng năm theo ý đồ của bạn. Vì trong thực tế thì sẽ phát sinh nhiều trường hơp lắm...
 
Upvote 0
Web KT
Back
Top Bottom