下面是vb程序的一个开头,运行后总是提示说要求常数表达式是怎么回事

PrivateSubCommand1_Click()IfLen(Trim(Text3.Text))=0ThenMsgBox"不能为空!"Text3.SetFocusExi... Private Sub Command1_Click()
If Len(Trim(Text3.Text)) = 0 Then
MsgBox "不能为空!"
Text3.SetFocus
Exit Sub
End If
If Trim(Text3.Text) = 0 Then
MsgBox "不能为零!"
Text3.SetFocus
Exit Sub
End If
m = Val(Text3.Text)
Dim i, a(1 To m), b(1 To m), c(1 To m), d(1 To m), e(1 To m) As Integer
Dim sum1, sum2 As Long, avg1, avg2 As Single
展开
 我来答
Yuqi_Tan

2014-11-22 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3485万
展开全部
出现这个问题的原因是:
VB中声明数组时,必须使用确定的数字来确定下标的数字,如dim a(3) as integer是合法的。而dim a(n)是非法的。你在声明abcde等数组时均使用了变量m,这是VB不允许的,故出现“要求常数表达式”的提示。

解决办法:
有时候,还确实需要在程序运行时确定数组的维数,这时,你可以先只声明数组名字如:dim a() as intrger,等到输入变量的确切数值之后再声明这个数组的下标,使用的命令是:redim a(m)。

在本例中,你可以做如下修改:

Private Sub Command1_Click()
Dim i, a(), b(), c(), d(), e() As Integer
If Len(Trim(Text3.Text)) = 0 Then
MsgBox "不能为空!"
Text3.SetFocus
Exit Sub
End If
If Trim(Text3.Text) = 0 Then
MsgBox "不能为零!"
Text3.SetFocus
Exit Sub
End If
Dim m As Integer
m = Val(Text3.Text)
ReDim a(1 To m), b(1 To m), c(1 To m), d(1 To m), e(1 To m)
Dim sum1, sum2 As Long, avg1, avg2 As Single
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式