vba 输入框维护取消

Posted

技术标签:

【中文标题】vba 输入框维护取消【英文标题】:vba inputbox maintenance on cancel 【发布时间】:2020-07-29 20:40:43 【问题描述】:

我正在寻找一种仅在输入整数 1-12 时让输入框通过的方法。 其中的任何字符串,双值,空或 ESCAPE(取消)按钮都会抛出 Exit Sub

我知道网上有很多例子,我都试过了!但总是在 ESCAPE 或其他场合出现错误。

到目前为止我有这个,但它在取消时出错:

dMonth = InputBox("Which month to count?", "Choose month", Format(Date, "m") - 1)
If (Not (Int(dMonth) >= 0 And Int(dMonth) <= 12)) Or StrPtr(dMonth) = 0 Or StrPtr(dMonth) = 698279968 Or dMonth = "" Then Exit Sub

有什么建议或想法吗?

谢谢

【问题讨论】:

假设 dMonth 是一个字符串,因为这是 InputBox 返回的,Int 将遇到空字符串的问题。请改用Val 最初我使用整数,但问题太多,所以我尝试使用字符串作为所有 google sggests。请给出代码示例,如果它可以完全工作,我可以标记为正确答案 【参考方案1】:

试试这个:

Private Sub Command1_Click()
   Dim sMonth As String
   Dim dMonth As Double

   sMonth = InputBox("Which month to count?", "Choose month", Format(Date, "m") - 1)
   dMonth = Val(sMonth)                         'convert user input to numeric
   If dMonth <> Fix(dMonth) Then Exit Sub       'check for an integer
   If dMonth < 1 Or dMonth > 12 Then Exit Sub   'check for required range

   MsgBox dMonth
End Sub

【讨论】:

以上是关于vba 输入框维护取消的主要内容,如果未能解决你的问题,请参考以下文章

VBA:输入框和取消按钮

VBA输入框-取消和变量设置

Excel VBA取消输入框不返回false/exit sub

VBA输入框(InputBox)

vba inputBox:如何用空文本框区分“取消”和“确定”之间的区别

带取消功能的 VBA 密码输入