这是题目:
窗体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,溢出”
但是根据题目,这个答案就不对应啊,求解
上面有两张图片,是考试专门书的原题和答案。
我刚试了下,在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等五个控件。