动态数据的声明应该放在全局区域内,你不能在函数内部声明,应该把它定义为模块内变量,同时,定义时不能指定它的数目的大小。可以再仔细看一下MSDN

解决方案 »

  1.   

    我看zzh的就听对的,你再看看了
      

  2.   

    程序(Fixed):
    '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
      

  3.   

    原因分析:使用 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