
一个inputbox函数程序部分功能实现问题~~
我用VB编了一个程序,功能是~~首先在窗体上输出0-9,按下移动按钮后,会弹出对话框输入移动次数,然后根据输入的次数将数字右移~~比如~~输入3~~屏幕上就会显示~~01...
我用VB编了一个程序,功能是~~
首先在窗体上输出0-9,按下移动按钮后,会弹出对话框输入移动次数,然后根据输入的次数将数字右移~~
比如~~
输入3~~
屏幕上就会显示~~
0123456789
7890123456
程序如下~~~
Dim a(9) As Integer, i%, Num%, b(9) As Integer
Private Sub CMD_Click()
Num = InputBox("请输入位移次数:", "位移次数")
If Num > 10 Then
Num = Num - Int(Num / 10) * 10
End If
For i = LBound(a) To UBound(a)
If i - Num < 0 Then
b(i) = a(UBound(a) - (Num - i - 1))
Else
b(i) = a(i - Num)
End If
Print b(i);
Next i
Print
End Sub
Private Sub Form_Activate()
For i = 0 To 9
a(i) = i
Next i
For i = LBound(a) To UBound(a)
Print a(i);
Next i
Print
End Sub
运行正常,但有两个问题~~
一:我如果按弹出对话框的取消按钮,会提示出错信息~~“实时错误13,类型不匹配”
二:我如果不在弹出的对话框中输入任何信息直接点确定,会提示错误~~“实时错误13,类型不匹配”
三:还有一个就是我如果在信息框中输入非数字,也会提示“实时错误13,类型不匹配”。
我希望我如果按取消,提示信息框取消,不报错,程序继续~~
我希望我如果不输入信息按确定,会弹出msgbox提示输入信息,提示信息框存在,程序继续~~
我希望我如果输入非数字内容,会弹出msgbox提示必须输入数字,提示信息框存在,程序继续~~
各位大侠以上要求有可能实现么?如果可以请指点一二,将程序写出~~~不胜感激~~~
2楼Yuqi_Tan的方法能够实现~~QQQ
1楼活雷锋的方法提示“编译错误,标签未定义”黄色焦点在“Private Sub CMD_Click()”,蓝色焦点在“On Error GoTo Err”虽然没有实现,但意思我理解了。从理论上讲确实不错。
感谢二位大侠让我学会了用两种方法做这道题。谢谢。 展开
首先在窗体上输出0-9,按下移动按钮后,会弹出对话框输入移动次数,然后根据输入的次数将数字右移~~
比如~~
输入3~~
屏幕上就会显示~~
0123456789
7890123456
程序如下~~~
Dim a(9) As Integer, i%, Num%, b(9) As Integer
Private Sub CMD_Click()
Num = InputBox("请输入位移次数:", "位移次数")
If Num > 10 Then
Num = Num - Int(Num / 10) * 10
End If
For i = LBound(a) To UBound(a)
If i - Num < 0 Then
b(i) = a(UBound(a) - (Num - i - 1))
Else
b(i) = a(i - Num)
End If
Print b(i);
Next i
End Sub
Private Sub Form_Activate()
For i = 0 To 9
a(i) = i
Next i
For i = LBound(a) To UBound(a)
Print a(i);
Next i
End Sub
运行正常,但有两个问题~~
一:我如果按弹出对话框的取消按钮,会提示出错信息~~“实时错误13,类型不匹配”
二:我如果不在弹出的对话框中输入任何信息直接点确定,会提示错误~~“实时错误13,类型不匹配”
三:还有一个就是我如果在信息框中输入非数字,也会提示“实时错误13,类型不匹配”。
我希望我如果按取消,提示信息框取消,不报错,程序继续~~
我希望我如果不输入信息按确定,会弹出msgbox提示输入信息,提示信息框存在,程序继续~~
我希望我如果输入非数字内容,会弹出msgbox提示必须输入数字,提示信息框存在,程序继续~~
各位大侠以上要求有可能实现么?如果可以请指点一二,将程序写出~~~不胜感激~~~
2楼Yuqi_Tan的方法能够实现~~QQQ
1楼活雷锋的方法提示“编译错误,标签未定义”黄色焦点在“Private Sub CMD_Click()”,蓝色焦点在“On Error GoTo Err”虽然没有实现,但意思我理解了。从理论上讲确实不错。
感谢二位大侠让我学会了用两种方法做这道题。谢谢。 展开
2个回答
展开全部
一:我如果按弹出对话框的取消按钮,会提示出错信息~~“实时错误13,类型不匹配”
解释:InputBox() 函数返回的值是一个字符串。你的语句是Num = InputBox(...),因为已经定义了Num是个整形数,所以当你输入数字时,自动转变为整形格式。当你按取消时,InputBox() 得到一个空字符串即"",它不能转变成整形格式,所以提示实时错误13,类型不匹配”。
二:我如果不在弹出的对话框中输入任何信息直接点确定,会提示错误~~“实时错误13,类型不匹配”
解释:其实,即使你点了确定,因为没有输入任何东东,所以当你按确定之后,InputBox() 仍然得到一个空字符串即"",因为它不能转变成整形格式(参照问题一解释),所以仍提示“实时错误13,类型不匹配”。
三:还有一个就是我如果在信息框中输入非数字,也会提示“实时错误13,类型不匹配”。
解释:再三,当你输入非数字的东东(如33rr88),按确定之后,InputBox() 得到一个原样的字符串即"33rr88",因为它不能直接转变成整形格式(参照问题一解释),所以仍然是提示“实时错误13,类型不匹配”。
要解决这个问题,我通常是这样解决的:
定义一个St变量,让input语句给它赋值,永远不会出错!
然后通过判断st的值估摸相应的变化:
如果st=""则退出,st不是数字时提示重新输入,st是数字时转化成数字格式往下执行。
关于什么也不输就按“确定”时出错问题的解决,一般是在input显示框中放上一个默认值,这样,直接按“确定”时,等于输入了默认值,就不会出错误提示了。如在本例中可以放上一个3。
具体程序可以这样:
'把你程序中Num = InputBox("请输入位移次数:", "位移次数") 一句去掉换成下面几行:
Dim St As String
Do
St = InputBox("请输入位移次数:", "位移次数", 3)
If St = "" Then Exit Sub
If IsNumeric(St) Then Exit Do
msgbox "请输入数字!"
Loop
Num = Val(St)
后面接你的程序,就行了。
解释:InputBox() 函数返回的值是一个字符串。你的语句是Num = InputBox(...),因为已经定义了Num是个整形数,所以当你输入数字时,自动转变为整形格式。当你按取消时,InputBox() 得到一个空字符串即"",它不能转变成整形格式,所以提示实时错误13,类型不匹配”。
二:我如果不在弹出的对话框中输入任何信息直接点确定,会提示错误~~“实时错误13,类型不匹配”
解释:其实,即使你点了确定,因为没有输入任何东东,所以当你按确定之后,InputBox() 仍然得到一个空字符串即"",因为它不能转变成整形格式(参照问题一解释),所以仍提示“实时错误13,类型不匹配”。
三:还有一个就是我如果在信息框中输入非数字,也会提示“实时错误13,类型不匹配”。
解释:再三,当你输入非数字的东东(如33rr88),按确定之后,InputBox() 得到一个原样的字符串即"33rr88",因为它不能直接转变成整形格式(参照问题一解释),所以仍然是提示“实时错误13,类型不匹配”。
要解决这个问题,我通常是这样解决的:
定义一个St变量,让input语句给它赋值,永远不会出错!
然后通过判断st的值估摸相应的变化:
如果st=""则退出,st不是数字时提示重新输入,st是数字时转化成数字格式往下执行。
关于什么也不输就按“确定”时出错问题的解决,一般是在input显示框中放上一个默认值,这样,直接按“确定”时,等于输入了默认值,就不会出错误提示了。如在本例中可以放上一个3。
具体程序可以这样:
'把你程序中Num = InputBox("请输入位移次数:", "位移次数") 一句去掉换成下面几行:
Dim St As String
Do
St = InputBox("请输入位移次数:", "位移次数", 3)
If St = "" Then Exit Sub
If IsNumeric(St) Then Exit Do
msgbox "请输入数字!"
Loop
Num = Val(St)
后面接你的程序,就行了。
2009-03-05
展开全部
Dim a(9) As Integer, i%, Num%, b(9) As Integer
Private Sub CMD_Click()
On Error GoTo err
Num = Val(InputBox("请输入位移次数:", "位移次数"))
If Num > 10 Then
Num = Num - Int(Num / 10) * 10
End If
For i = LBound(a) To UBound(a)
If i - Num < 0 Then
b(i) = a(UBound(a) - (Num - i - 1))
Else
b(i) = a(i - Num)
End If
Print b(i);
Next i
Print
err:
End Sub
Private Sub Form_Activate()
For i = 0 To 9
a(i) = i
Next i
For i = LBound(a) To UBound(a)
Print a(i);
Next i
Print
End Sub
这样就好 没必要搞那么复杂
因为你已经将Num%定义为整型 所以你输入非数字就会报错~
Private Sub CMD_Click()
On Error GoTo err
Num = Val(InputBox("请输入位移次数:", "位移次数"))
If Num > 10 Then
Num = Num - Int(Num / 10) * 10
End If
For i = LBound(a) To UBound(a)
If i - Num < 0 Then
b(i) = a(UBound(a) - (Num - i - 1))
Else
b(i) = a(i - Num)
End If
Print b(i);
Next i
err:
End Sub
Private Sub Form_Activate()
For i = 0 To 9
a(i) = i
Next i
For i = LBound(a) To UBound(a)
Print a(i);
Next i
End Sub
这样就好 没必要搞那么复杂
因为你已经将Num%定义为整型 所以你输入非数字就会报错~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询