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
...如果您输入0
或Falsch
(德语Excel)或False
(英语Excel),它也会退出。
这是因为0
或"Falsch"
(或"False"
)的字符串在与False
比较时会自动转换为布尔值。但只有 Cancel 按钮返回一个真正的布尔值。
【讨论】:
非常好的方法。【参考方案2】:去掉引号:
If varInput = False Then
【讨论】:
在这种情况下,如果我按取消它会起作用,但如果我写一些东西并按确定它会失败。 varIpunt 比包含例如的字符串“测试”,它在修改后的行上失败了。 @Meloun 将varInput
显式声明为 Variant 而不是 String。
@patrick 您还必须测试 VarType(varInput) = vbBoolean
否则它也会在诸如 0
或 Falsch
之类的值上退出 sub (在 OP 的情况下)。看我的回答。以上是关于VBA:输入框和取消按钮的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA取消输入框不返回false/exit sub