下面是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 展开
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 展开
1个回答
展开全部
出现这个问题的原因是:
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
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询