动态数据的声明应该放在全局区域内,你不能在函数内部声明,应该把它定义为模块内变量,同时,定义时不能指定它的数目的大小。可以再仔细看一下MSDN
解决方案 »
- 通过进程名字取得该进程窗口名称
- crystal 報表發郵件問題
- 如果实现对网页的控件读取???
- 再送200分,求将EXCEL中的数据保存到我得ACCESS中,并覆盖原表
- 注册表问题
- 在Frame控件上加个label,而label的内容被FRAME给挡住了?咋回事?偶是初学者!
- (急)光驱问题:检测得到,放入盘却读不了???(此贴与VB无关,请大家帮忙)
- 我在程序中有一个DATAGRID控件,请问我在发行时
- 绿色上网软件VB能做吗?多少钱能做?详情进来看看...
- 哪里能找到IBM ThinkPad T22显卡的驱动!
- 艺术,技术,谁更重要?
- 如何在VB里给Listview控件的每个Item设置不同的背景色?
'Global Declaration
public salary1() as single
public salary2() as singlePrivate Sub Command1_Click() Redim Salary1(5)
Redim Salary2(8)Salary(0) = 1111
'...(0 to 5)Salary2(0) = 2222
'...(0 to 8)Text1.Text = Int(average(salary1(), 5) * 100) / 100
Text2.Text = Int(average(salary2(), 8) * 100) / 100
End Sub Private Function average(stuarray() As Single) As Single Dim i As Integer
Dim sum As Single '//???????/ReDim stuarray(n) /运行到此处出错 For i = 0 To UBound(stuarray)
sum = sum + stuarray(i)
Nextaverage = sum/(i+1)End Function
在出错处,计算机提示\"the array is fixed or temporarily locked\"不知为何? 错误:
(1)Average算法不对
(2)不需要用Redim
解决办法如下:
在过程中声明变量数组,来取代固定数组。
代码如下:Option ExplicitPrivate Sub Command1_Click()
Dim salary1(5) As Single, salary2(8) As Single
salary1(0) = 1900: salary1(1) = 1970: salary1(2) = 1915
salary1(3) = 1600: salary1(4) = 1655
salary2(0) = 2675: salary2(1) = 2780: salary2(2) = 2715
salary2(3) = 2540: salary2(4) = 2990
salary2(5) = 2770: salary2(6) = 2895: salary2(7) = 2765
Text1.Text = Int(average(salary1(), 5) * 100) / 100
Text2.Text = Int(average(salary2(), 8) * 100) / 100
End SubPrivate Function average(stuarray() As Single, n As Integer) As SingleDim i As Integer
Dim aver As Single, sum As Single
Dim a() As String
i = UBound(stuarray)
ReDim a(n)For i = 0 To n - 1
a(i) = stuarray(i)
Next i'ReDim stuarray(n) '/运行到此处出错
For i = 0 To n - 1
sum = sum + a(i)
Next i
aver = sum / n
average = aver
End Function