Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在请求日期的输入框上单击“取消”时出现运行时错误_Vba_Ms Access - Fatal编程技术网

Vba 在请求日期的输入框上单击“取消”时出现运行时错误

Vba 在请求日期的输入框上单击“取消”时出现运行时错误,vba,ms-access,Vba,Ms Access,最终的结果是一份时间表。我最初将其放在excel中,但我希望将工资单信息/模块移动到access中。当我在excel中时,“取消”按钮工作正常,但在access中它总是出错。网上的一些研究表明,这是一个我认为可以用类似的方法解决的问题 If StartDate = "" Then GoTo ext: End If 这导致 运行时错误13 我认为这是因为当点击cancel时,StartDate变量为空,输入框需要某种类型的输入。我会继续在线查看,但问题可能是我不应该使用输入框,但如果是

最终的结果是一份时间表。我最初将其放在excel中,但我希望将工资单信息/模块移动到access中。当我在excel中时,“取消”按钮工作正常,但在access中它总是出错。网上的一些研究表明,这是一个我认为可以用类似的方法解决的问题

 If StartDate = "" Then
  GoTo ext:
  End If
这导致

运行时错误13

我认为这是因为当点击cancel时,StartDate变量为空,输入框需要某种类型的输入。我会继续在线查看,但问题可能是我不应该使用输入框,但如果是这种情况,我不确定应该使用什么?全文如下。感谢您的帮助

Private Sub CreateTimeSheet_Click()

Dim StartDate As Date

mbox = InputBox("Enter Start Date YYYY/MM/DD", "Enter Start Date")
StartDate = mbox

  If StartDate = "" Then
  GoTo ext:
  End If

FirstDay = Format(CDate(StartDate))
Text76 = Format(CDate(StartDate + 1))
Text77 = Format(CDate(StartDate + 2))
Text78 = Format(CDate(StartDate + 3))
Text79 = Format(CDate(StartDate + 4))
Text80 = Format(CDate(StartDate + 5))
Text81 = Format(CDate(StartDate + 6))
Text82 = Format(CDate(StartDate + 7))
Text83 = Format(CDate(StartDate + 8))
Text84 = Format(CDate(StartDate + 9))
Text85 = Format(CDate(StartDate + 10))
Text86 = Format(CDate(StartDate + 11))
Text87 = Format(CDate(StartDate + 12))
Text88 = Format(CDate(StartDate + 13))

Text61 = Format(CDate(mbox), "dddd")
Text63 = Format(CDate(StartDate + 1), "dddd")
Text64 = Format(CDate(StartDate + 2), "dddd")
Text65 = Format(CDate(StartDate + 3), "dddd")
Text66 = Format(CDate(StartDate + 4), "dddd")
Text67 = Format(CDate(StartDate + 5), "dddd")
Text68 = Format(CDate(StartDate + 6), "dddd")
Text69 = Text61.value
Text70 = Text63.value
Text71 = Text64.value
Text72 = Text65.value
Text73 = Text66.value
Text74 = Text67.value
Text75 = Text68.value

ext:
Exit Sub

End Sub

由于
InputBox
返回一个
字符串
,因此您需要将结果存储到
字符串
,而不是
日期
变量中。然后可以使用
IsDate()
检查结果文本是否可以转换为日期。然后才继续,否则退出。请记住,用户可以在
输入框
中输入任何内容-您不能指望他们输入实际的日期值

Dim mbox As String
Dim StartDate As Date

mbox = InputBox("Enter Start Date YYYY/MM/DD", "Enter Start Date")
If IsDate(mbox) Then
  StartDate = CDate(mbox)
Else
  If mbox = "" Then
    ' user entered nothing, so cancel
    Exit Sub
  Else
    ' user entered garbage, so tell them what they did wrong
    MsgBox "That is not a date."
    Exit Sub
  End If
End If

' valid data entered... rest of your code here

此外,如果要向日期值添加天数,则需要使用,而不是简单的添加。

由于
InputBox
返回一个
字符串
,因此需要将结果存储到
字符串
,而不是
日期
变量中。然后可以使用
IsDate()
检查结果文本是否可以转换为
日期。然后才继续,否则退出。请记住,用户可以在
输入框
中输入任何内容-您不能指望他们输入实际的日期值。
“”
不是
日期
如果
结束子节点
直接位于
退出子节点
之后,则实际上不需要
退出子节点
-它将在反弹到
分机:
后直接命中
结束子节点
。我想你最初想要的是一行代码
如果StartDate=“”,那么退出Sub