Excel 当存在错误的变量类型输入错误时,重新运行InputBox
我的目标是在InputBox崩溃时重新运行它,并为用户提供另一个提供正确输入类型的机会。(就像它崩溃一样,你会得到一个msgbox,上面写着“对不起,你的条目不可用,请重试”,它会跳回输入框。)Excel 当存在错误的变量类型输入错误时,重新运行InputBox,excel,vba,inputbox,Excel,Vba,Inputbox,我的目标是在InputBox崩溃时重新运行它,并为用户提供另一个提供正确输入类型的机会。(就像它崩溃一样,你会得到一个msgbox,上面写着“对不起,你的条目不可用,请重试”,它会跳回输入框。) qm被定义为一个Integer,=0,下面有一个Select Casemultiplealternative,它将qm更改为1-600之间的数字 当我输入类似“嘿,伙计们”的文本时,Excel会给我错误13(运行时错误13):类型不匹配)。如果IsError(qm)的话,您可以用替换,然后转到Test1
qm
被定义为一个Integer
,=0,下面有一个Select Case
multiplealternative,它将qm
更改为1-600之间的数字
当我输入类似“嘿,伙计们”的文本时,Excel会给我错误13(运行时错误13):类型不匹配)。如果IsError(qm)的话,您可以用
替换,然后转到Test1
,然后用替换错误转到Test1
,并用替换错误转到0
重置错误处理程序
详细信息请参见如果iSeries错误(qm),您可以将
替换为,然后将替换为错误上的,将替换为错误上的,以重置错误处理程序
有关详细信息,请参见下面的内容
Sub Demo()
Dim qm As String
qm = 0
Test1:
qm = InputBox("Enter value")
If Not IsNumeric(qm) Then GoTo Test1
End Sub
将
qm
声明为String
并检查其是否为数字。然后,您必须使用CInt()
将String
转换为Integer
,尝试以下方法
Sub Demo()
Dim qm As String
qm = 0
Test1:
qm = InputBox("Enter value")
If Not IsNumeric(qm) Then GoTo Test1
End Sub
将
qm
声明为String
并检查其是否为数字。然后您必须使用CInt()
将字符串
转换为整数
有多种方法可以解决此问题。我建议将变量定义为variant
(可以保存任何数据类型),并检查它是否为数字:
dim answer as variant, qm as integer
do while true
answer = InputBox(...)
if isNumeric(answer) then
qm = cInt(answer)
exit do
endif
loop
有多种方法可以解决这个问题。我建议将变量定义为
variant
(可以保存任何数据类型),并检查它是否为数字:
dim answer as variant, qm as integer
do while true
answer = InputBox(...)
if isNumeric(answer) then
qm = cInt(answer)
exit do
endif
loop
您可以设置一个事件,以便在文本框每次更改时验证其内容。我检查过这是一个数字,但是你可以验证你需要的任何其他条件
Private Sub TextBox1_Change()
validator = IsNumeric(TextBox1.Value)
If validator = False Then
MsgBox "WARNING! You must enter a number!"
TextBox1.BackColor = &HFF8&
End If
End Sub
您可以设置一个事件,以便在文本框每次更改时验证其内容。我检查过这是一个数字,但是你可以验证你需要的任何其他条件
Private Sub TextBox1_Change()
validator = IsNumeric(TextBox1.Value)
If validator = False Then
MsgBox "WARNING! You must enter a number!"
TextBox1.BackColor = &HFF8&
End If
End Sub
这就是为什么在VBA中,您可以将
应用程序.InputBox
与第四个参数Type
一起使用。如果使用Type:=1
,则只允许使用数值
代码:
Dim qm As Integer
qm = Application.InputBox("Wie viele Quadrat Meter hat die Wohnung?" _
& vbLf & "Bitte geben sie die QM Zahl an.", "Angabe", Type:=1)
这就是为什么在VBA中,您可以将
应用程序.InputBox
与第四个参数Type
一起使用。如果使用Type:=1
,则只允许使用数值
代码:
Dim qm As Integer
qm = Application.InputBox("Wie viele Quadrat Meter hat die Wohnung?" _
& vbLf & "Bitte geben sie die QM Zahl an.", "Angabe", Type:=1)
您可以使用
应用程序。InputBox
版本的VBA,请参见下面的我的答案。您可以使用应用程序。InputBox
版本的VBA,请参见下面的我的答案。非常感谢您编辑我的问题,使其更具可读性。Allpication.Inputbox工作得很好,我将尝试以您的编辑为例,在以后的帖子和答案中使用。非常感谢您编辑我的问题,使其更具可读性。Allpication.Inputbox工作得很好,我将尝试以您的编辑为例,为以后的帖子和答案提供参考。谢谢。IsNumeric()解决方案是为我的任务提供的提示,但我很高兴您向我展示了如何正确使用它。谢谢。IsNumeric()解决方案是为我的任务提供的提示,但我很高兴你向我展示了如何正确使用它。伙计,对我来说,这是一个聪明的解决方案。非常感谢。对我来说,这是一个聪明的解决方案。谢谢。