在我最近的任务中,要求我接受用户的输入。一个输入值是出生日期,当然它必须是一个日期。

我正在做的是将输入存储在变量数据类型中。这使得代码没有错误,并且代码接受用户提供的任何值。下面是代码:

Dim dob As Variant

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

当然,这是不正确的方法,因为用户可以输入任何可能不是有效日期的值。

我要使我的代码检测到任何无效的日期,并要求用户输入有效的日期并结束子例程。

这是允许用户仅输入有效日期作为输入的代码。

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

当您运行上面的代码时,它将要求您输入出生日期。如果输入的日期无效,它将要求您输入有效的日期并结束该过程。

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”.

接下来,我们使用OnError Goto * error处理程序捕获此错误。

On Error GoTo Errorhandler

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

On Error GoTo 0

使用On Error,我们将控件跳转到标签Errorhandler,该标签位于End Sub语句之前。因此,要求用户输入一个有效的日期,该子步骤结束。

Errorhandler:

MsgBox "Please enter a valid date."

End Sub

如果用户输入了有效日期,则控件将正常流动并将输入保存在dob变量中。我们放置了Exit子语句,以便控件不会转到错误处理程序并在此结束过程。因此,将所有end语句放在exit sub之前。就是这样。

是的,这是您如何限制用户仅输入有效日期。

如果您对VBA日期或任何其他与Excel / VBA相关的查询有任何疑问,请告诉我。在下面的评论部分中问我们。

相关文章:

使用VBA插入日期时间戳记 |输入使用此VBA代码填充特定单元格时的时间戳。如果在A列中输入任何值,则B列中的相邻单元格将自动填充输入时间。

`link:/ excel-macros-and-vba-date-time-in-vb [VBA中的日期和时间] |在此页面上找到有关VBA中日期和时间的所有主题。

热门文章:

50 Excel快捷方式以提高生产率更快地完成任务。这50个快捷键将使您在Excel上的工作速度更快。

Excel中的VLOOKUP函数在Excel 2016中为COUNTIF使用此惊人的功能对条件进行计数。您无需过滤数据即可计算特定值。

Countif功能对于准备仪表板至关重要。

如何在Excel中使用SUMIF函数这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。