VBA:输入框和取消按钮

Posted

技术标签:

【中文标题】VBA:输入框和取消按钮【英文标题】:VBA: inputbox and cancel button 【发布时间】:2019-08-22 12:13:33 【问题描述】:
varInput = Application.InputBox("Text", "Title", Type:=2)
If varInput = "False" Then
    Exit Sub
End If

如果按下取消按钮,则返回值为“False”的字符串。 但在某些具有德语设置的计算机上,我会得到“Falsch”!

这个应该怎么处理?

【问题讨论】:

Here 您可以从@Pᴇʜ 阅读如何操作。这个问题与您的问题没有任何共同之处,但部分代码处理了这个问题。看看有没有帮助。 【参考方案1】:

在使用Application.InputBox 时,您还必须始终将变量的类型测试为布尔值:VarType(varInput) = vbBoolean

Dim varInput As Variant
varInput = Application.InputBox("Text", "Title", Type:=2)

If VarType(varInput) = vbBoolean And varInput = False Then
    Exit Sub
End If

如果你只测试False ...

If varInput = False Then

...如果您输入0Falsch(德语Excel)或False(英语Excel),它也会退出。

这是因为0"Falsch"(或"False")的字符串在与False 比较时会自动转换为布尔值。但只有 Cancel 按钮返回一个真正的布尔值。

【讨论】:

非常好的方法。【参考方案2】:

去掉引号:

If varInput = False Then

【讨论】:

在这种情况下,如果我按取消它会起作用,但如果我写一些东西并按确定它会失败。 varIpunt 比包含例如的字符串“测试”,它在修改后的行上失败了。 @Meloun 将 varInput 显式声明为 Variant 而不是 String @patrick 您还必须测试 VarType(varInput) = vbBoolean 否则它也会在诸如 0Falsch 之类的值上退出 sub (在 OP 的情况下)。看我的回答。

以上是关于VBA:输入框和取消按钮的主要内容,如果未能解决你的问题,请参考以下文章

vba 输入框维护取消

用户取消输入框后如何停止vba

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

VBA输入框(InputBox)

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

从组合框和命令按钮 VBA 添加到工作表