Trong nhiệm vụ gần đây của tôi, tôi được yêu cầu chấp nhận đầu vào từ người dùng. Một giá trị đầu vào là ngày sinh và tất nhiên, nó phải là ngày tháng.

Những gì tôi đang làm là lưu trữ dữ liệu đầu vào trong một kiểu dữ liệu biến thể. Điều này làm cho mã không có lỗi và mã đang chấp nhận bất kỳ giá trị nào mà người dùng đưa ra. Dưới đây là mã:

Dim dob As Variant

dob = Application.InputBox("Enter Your Date of Birth")

Tất nhiên, đây là một cách tiếp cận không chính xác vì người dùng có thể nhập bất kỳ giá trị nào có thể không phải là ngày hợp lệ.

Điều tôi muốn là làm cho mã của tôi phát hiện bất kỳ ngày nào không hợp lệ và yêu cầu người dùng nhập ngày hợp lệ và kết thúc chương trình con.

Đây là mã cho phép người dùng chỉ nhập một ngày hợp lệ làm đầu vào.

Sub check_date()

Dim dob As Date

On Error GoTo Errorhandler

dob = Application.InputBox("Enter Your Date of Birth")

On Error GoTo 0

Debug.Print dob

Exit Sub

Errorhandler:

MsgBox "Please enter a valid date."

End Sub

Khi bạn chạy đoạn mã trên, nó sẽ yêu cầu bạn nhập ngày sinh của mình. Nếu bạn nhập ngày không hợp lệ, nó sẽ yêu cầu bạn nhập ngày hợp lệ và kết thúc thủ tục.

imageHow does it work?* The first and most important thing we have done is to use the Date type variable to store the expected date. Now, if you try to store a value that is not a valid date, it will through an error of “type mismatch”.

Tiếp theo, chúng tôi bắt lỗi này bằng cách sử dụng trình xử lý lỗiOn Error Goto *.

On Error GoTo Errorhandler

dob = Application.InputBox("Enter Your Date of Birth")

On Error GoTo 0

Sử dụng lỗi On, chúng tôi chuyển điều khiển sang thẻ Errorhandler, thẻ này nằm ngay trước câu lệnh End Sub. Vì vậy, người dùng được yêu cầu nhập một ngày hợp lệ và phụ kết thúc.

Errorhandler:

MsgBox "Please enter a valid date."

End Sub

Nếu người dùng đặt một ngày hợp lệ, thì quá trình điều khiển diễn ra bình thường và đầu vào được lưu trong biến dob. Chúng tôi đã đặt câu lệnh phụ Exit để điều khiển không chuyển đến trình xử lý lỗi và kết thúc thủ tục ngay tại đó. Vì vậy, hãy đặt tất cả các câu lệnh kết thúc trước khi thoát khỏi sub. Và đó là nó.

Vì vậy, các bạn, đây là cách bạn hạn chế người dùng chỉ nhập ngày hợp lệ.

Hãy cho tôi biết nếu bạn có bất kỳ nghi ngờ nào về ngày tháng VBA hoặc bất kỳ truy vấn nào khác liên quan đến Excel / VBA. Hãy hỏi chúng tôi trong phần bình luận bên dưới.

Bài viết liên quan:

Bài viết phổ biến:

Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.