如何处理 InputBox 取消按钮?

Fla*_*w98 0 excel vba

我输入开始日期和结束日期并执行从 Outlook 导出的代码。

Sub ExportFromOutlook()
Dim dteStart As Date
Dim dteEnd As Date

dteStart = InputBox("What is the start date?", "Export Outlook Calendar")
dteEnd = InputBox("What is the end date?", "Export Outlook Calendar")
Call GetCalData(dteStart, dteEnd)
End Sub
Run Code Online (Sandbox Code Playgroud)

我希望当我按下任何输入框上的“取消按钮”时退出子程序,而不是在 VBA 代码中出现错误来调试它。

GSe*_*erg 5

不合格的InputBoxVBA.InputBox。它返回一个String,而不是日期,您可以StrPtr用来确定是否按下了取消:

Dim dteStart As Date
Dim dteEnd As Date
Dim t as string

t = InputBox("What is the start date?", "Export Outlook Calendar")
If StrPtr(t) = 0
  Exit Sub
Else
  dteStart = CDate(t)
End If

t = InputBox("What is the end date?", "Export Outlook Calendar")
If StrPtr(t) = 0
  Exit Sub
Else
  dteEnd = CDate(t)
End If
Run Code Online (Sandbox Code Playgroud)

如果您切换到Application.InputBox返回 Variant 的Excel 的,它可能会变得更简单一些:

Dim dteStart As Date
Dim dteEnd As Date
Dim t as Variant

t = Application.InputBox("What is the start date?", "Export Outlook Calendar", Type:=2)
If t = False
  Exit Sub
Else
  dteStart = CDate(t)
End If

t = Application.InputBox("What is the end date?", "Export Outlook Calendar", Type:=2)
If t = False
  Exit Sub
Else
  dteEnd = CDate(t)
End If
Run Code Online (Sandbox Code Playgroud)