请帮忙检查一下VB程序,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:26:16
模块上
Sub ProcMin(a(), amin)
amin = a(1)
For i = LBound(a) To UBound(a)
If a(i) < amin Then
amin = a(i)
Next
End Sub
这是窗体上
Option Base 1
Dim b(10) As Integer
Private Sub Command1_Click()
Call ProcMin(b(), n)
Print "数组中的最小值是:"; n
End Sub
Private Sub Form_Click()
Dim b(10) As Integer
For i = 1 To 10
b(i) = Int(Rnd * 101 - 400)
Print b(i);
Next
End Sub
问题补充:
运行时 类型不匹配,缺少数组或自定义类型

'首先纠正下你原来程序中的错误
Sub ProcMin(a(), amin) '<-这里,数组需要指定类型,既然你的b(10)是Integer,那么这里也需要是Integer
amin = a(1)
For i = LBound(a) To UBound(a)
If a(i) < amin Then
amin = a(i)
Next '<-少了一个End if 或者你应该把amin = a(i)和if放在同一行
End Sub

Option Base 1
Dim b(10) As Integer
Private Sub Command1_Click()
Call ProcMin(b(), n) '<-由于赋值操作用的是局部变量,这里用的是全局变量,导致这里的b(10)全部为0,无法完成你要找出最小数的操作
Print "数组中的最小值是:"; n
End Sub
Private Sub Form_Click()
Dim b(10) As Integer '<-虽然你有一个全局的b(10),但是在过程内部重新定义了一个,那么过程内部的赋值操作不会影响到全局的b(10)的值
For i = 1 To 10
b(i) = Int(Rnd * 101 - 400)
Print b(i);
Next
End Sub

'''''接下来是我修正后的代码

    Option Base 1
    Dim b(10) As Integer
Private Sub Command1_Click()
    Call ProcMin(b(), n)
&nb