如何返回功能函数数值
Function HG20592Array(ii As Integer) As Double()
  Dim HG20592(13), bb(7)
  HG20592(0) = Array(10, 15, 20, 25, 32, 40, 50, 65, 80, 100, 125, 150, 200, 250, 300, 350, 400, 450, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000)
  HG20592(1) = Array(33, 38, 48, 58, 69, 78, 88, 108, 124, 144, 174, 199, 254, 309, 363, 413, 463, 518, 568, 667, 772, 878, 978, 1078, 1295, 1510, 1710, 1918, 2125)
  HG20592(2) = Array(33, 38, 48, 58, 69, 78, 88, 108, 124, 144, 174, 199, 254, 309, 363, 413, 463, 518, 568, 667, 772, 878, 978, 1078, 1295, 1510, 1710, 1918, 2125)
  HG20592(3) = Array(41, 46, 56, 65, 76, 84, 99, 118, 132, 156, 184, 211, 266, 319, 370, 429, 480, 530, 582, 682, 794, 901, 1001, 1112, 1328, 1530, 1750, 1950, 2125)  For ii = 0 To 7
    bb(ii) = HG20592(ii)(jj)
    Debug.Print bb(ii)
  Next ii
  
????  HG20592Array(ii) = bb(ii)
  Debug.Print TypeName(HG20592Array)-返回double()End FunctionSub ls()
  Dim aa(0 To 13) As Double
  HG20592Array (2)
End Sub

解决方案 »

  1.   

    这是正解
    Public   Function   a()   As   Integer()   
              Dim   b(2)   As   Integer   
              b(0)   =   0   
              b(1)   =   1   
              b(2)   =   2   
              a   =   b   
      End   Function   
        
      Private   Sub   Command1_Click()   
              Dim   c()   As   Integer   
              Dim   d   As   Integer   
              c   =   a   
              d   =   c(1)   
      End   Sub   
    Function HG20592Array(ii As Integer) As Double() 
      Dim HG20592(13), bb(7) 
      HG20592(0) = Array(10, 15, 20, 25, 32, 40, 50, 65, 80, 100, 125, 150, 200, 250, 300, 350, 400, 450, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000) 
      HG20592(1) = Array(33, 38, 48, 58, 69, 78, 88, 108, 124, 144, 174, 199, 254, 309, 363, 413, 463, 518, 568, 667, 772, 878, 978, 1078, 1295, 1510, 1710, 1918, 2125) 
      HG20592(2) = Array(33, 38, 48, 58, 69, 78, 88, 108, 124, 144, 174, 199, 254, 309, 363, 413, 463, 518, 568, 667, 772, 878, 978, 1078, 1295, 1510, 1710, 1918, 2125) 
      HG20592(3) = Array(41, 46, 56, 65, 76, 84, 99, 118, 132, 156, 184, 211, 266, 319, 370, 429, 480, 530, 582, 682, 794, 901, 1001, 1112, 1328, 1530, 1750, 1950, 2125) 
    Hg20593Array=HG20592End Function Sub ls() 
      Dim aa() As Double ()
      AA=HG20592ArraY
    End Sub 
      

  2.   

    我为什么不能正常运行,关键是数据类型不统一.
    function aa() as double()
    在function内的dim aa() as double 必须要double在sub里
    必须要dim aa() as double
    切记,function和sub的数组的数据类型一定要统一.
      

  3.   

    此方法对function返回数组比较有实用
      

  4.   

    '不重复排序
    Function gg(xm)    Dim Arr, Temp() As String '声明变量
        Dim s%, r% '声明单值变量
        On Error Resume Next '启动一个错误处理程序
        
        r = 0 '初值
        s = UBound(xm) '最大下标
        ReDim Arr(s - 1)
        For I = 0 To s '循环
            Temp = Filter(Arr, xm(I)) '搜索数组
            If UBound(Temp) = -1 Then '如果未找到
                r = r + 1 '序号,自增1
                ReDim Preserve Arr(1 To r)  '定义动态数组大小
                Arr(r) = xm(I) '把姓名复制到数组Arr()中。
               ' Debug.Print Arr(r)
               
            End If
        Next
        gg = Arr
        Debug.Print
    End FunctionSub lll()
      Dim xm1(), abc()
      xm1 = Array(2, 0, 3, 1, 9, 9, 2, 3, 1, 2, 2, 2, 1, 9, 9, 9, 3)
      abc = gg(xm1)
      Debug.Print
    End Sub