关于滚动条和inputbox函数,运行时出现实时错误“6”,溢出,计算机二级VB题库里的综合题

这是题目:
窗体form1中有一个命令按钮和一个水平滚动条。
单击“移动”按钮后,在弹出的对话框中输入数值,输入一个整数后,单击“移动”,滚动条中的滚动快移动到指定的刻度,如果超过了滚动条的最大刻度,则不移动,并且在窗体上显示“输入的数值太大”,如果超过了滚动条的最小刻度,则不移动,并且在窗体上显示“输入的数值太小”。

这是按照答案编写的代码:
Dim a As Integer
a = Val(InputBox("请输入数值"))
If a > HScroll1.Max Then
Cls
Print "输入的数值太大"
ElseIf a < HScroll1.Min Then
Cls
Print "输入的数值太小"
Else
Cls
HScroll1.Value = a
End If

当输入“333”的时候,滚动条滑动了,当输入“33333”的时候,没有滑动,并且没有输出“输入的数值太大”。
会不会是因为inputbox有限制,该怎么调试呢
integer的默认范围是-32767~32767
滚动条的默认范围是0~32767
输入0~32767,滚动条可以工作,
输入-32767~0,左上方显示“输入的数值太小”
输入大于32767,并不会显示“输入的数值太大”
输入小于-32767和大于32767的数值时,显示错误:“实时错误6,溢出”

但是根据题目,这个答案就不对应啊,求解

题主你好,请看第一行代码 Dim a As Integer,是将 a 声明成了一个 Integer 型的变量。
而 Integer 的范围是 -32768--32767 的整数。
所以当输入 33333 时候超过了这个范围会溢出。

所以在测试的时候请在 -32768--32767 这个范围内输入。追问

上面有两张图片,是考试专门书的原题和答案。
我刚试了下,在0-32767,也就是滚动条的默认范围内,滑块是移动的,
在小于0的时候,左上方会显示出“输入的数值太小”
但是在大于32767的时候,又出现了那个错误:“实时错误6,溢出”,
但是想要出现的是在左上方也出现“输入的数值太大”
换成dim a as long之后,显示的是“编译错误,用户定义类型未定义”,所以换成long也没用,

追答

第一,如果声明成了 Integer 是不可以输入比 32767 大的,系统级的错误是最优先的,题主的所谓报错 "输入的数值太大" 那是利用代码来实现的,并不是真的编译上的错误。

第二,题主这是啥编译器啊?咋还有 long 这个类型?是 Long,VS 的话输入完 long 自动就变成 Long 了呀。

追问

1、额,vb输入之后确实是Long了,懒了一下,打字没大写。但是为什么会出现错误,dim a as long,就是定义为了长整形了呀?比integer范围大。
2、那,答案难道就不全或者有点矛盾吗?
我在想,如果设定一下hscroll.max和hscroll.min就可以解决这个问题是不,比如还是用integer,把scroll.max设定为20000,输入30000就显示出来"输入的数值太大"了。

追答

1、
Integer 整型,取值范围 -32768~32767
Long 长整型,取值范围 -2147483648~2147483648

2、
题目要求调试的是逻辑判断,针对这道题也就是 If,而不是编译错误。
如果是做软件的话这种错误当然是需要修正的,这道题而言在范围内输入测试就可以了。

追问

但是我把dim a as integer换成dim a as long之后弹出"编译错误"。why?
Microsoft common dialog control 6.0和Microsoft windows common controls 6.0(SP6)说的是一个控件吗?

追答

1、编译错误有多种原因,题主的截图是说“用户类型未定义”,因为VB中没有long这个类型,只有Long。

2、不是一个控件。前者封装在comdlg32.ocx,包含了对话框CommonDialog控件;后者封装在mscomctl.ocx,包含了工具栏Toolbar、图像列表ImageList、状态栏StatusBar、层树TreeView、图像下拉列表ImageCombo等五个控件。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-26
这个溢出是因为你的变量a设置为integer,它的最大值是32767,所以把dim a as integer 改为 dim a as long ,就可以了。追问

这个是换成long之后显示的错误,

你可以看下我上面的问题和答案,有两张图片,这个还是考试的官方书,

不知道为什么

相似回答
大家正在搜