怎样在一个Function 中返回一个 数组?怎样才能返回多个 数值?
如:Function aa()
      Dim qx(3) As Double
       .....
       .....
       ......
      aa=qx(3)
    end function
我想在调用aaa() 时返回一个数组,系统提示提示:不能个数组负值!程序如下!
  function aaa()
     dim rx(3) as double
       .....
       .....
       .....
     rx=aa
  end function

解决方案 »

  1.   

    ?你是不是打错了
     
       rx=aa
      end function改为
      for i=0 to 3   
         rx(i)=aa(i)
      next i
      end function
      

  2.   

    Option Explicit
     
     Dim a As Integer
      
    Private Sub Command1_Click()
     Dim i As Integer
     Dim m As Variant
      
      a = 5
      
      m = aaa(a)
      
      For i = 0 To 3
        Print m(i)
      Next
    End SubFunction aaa(ByVal NewValue As Integer) As Variant
      Dim x(3) As Integer
       Dim i As Integer
        
        For i = 0 To 3
          x(i) = NewValue + i
        Next
       aaa = x
    End Function
      

  3.   

    Public Function a() As Integer()
        Dim b(2) As Integer
        b(0) = 0
        b(1) = 1
        b(2) = 2
        a = b
    End FunctionPrivate Sub Command1_Click()
        Dim c() As Integer
        Dim d As Integer
        c = a
        d = c(1)
    End Sub
      

  4.   

    或者定义个局部数组变量
    aaa()
    在函数中执行对aaa的赋值Private aaa(100) As String
    Public Function a()
        aaa(1) = "a"
    End FunctionPrivate Sub Command1_Click()
        a
        MsgBox aaa(1)
    End Sub
      

  5.   

    返回数组的例子
    Private Sub Command1_Click()
        Dim i As Integer
        Dim str2() As String
        str2 = 返回数组
        For i = 0 To UBound(str2) - 1
            Debug.Print str2(i)
        Next
    End Sub
    Function 返回数组() As String()
        Dim str1() As String
        str1 = Split("a,b,c,d,e", ",")
        返回数组 = str1
    End Function返回多个值,或者使用返回数组,或者就定义几个全局变量,在函数中赋值
      

  6.   

    Option Explicit
     
     Dim a As Integer
      
    Private Sub Command1_Click()
     Dim i As Integer
     Dim m As Variant
      
      a = 5
      
      m = aaa(a)
      
      For i = 0 To 3
        Print m(i)
      Next
    End SubFunction aaa(ByVal NewValue As Integer) As Variant
      Dim x(3) As Integer
       Dim i As Integer
        
        For i = 0 To 3
          x(i) = NewValue + i
        Next
       aaa = x
    End Function
    这个做法是正确的~揭贴
      

  7.   

    要对数组赋值,这个数组必须是空数组。试试:
    Option ExplicitDim strArr() As String'返回数组的函数
    Private Function TestFun() As String()
        Dim strArrTmp() As String
        
        ReDim strArrTmp(1) As String
        strArrTmp(0) = "Hello!"
        strArrTmp(1) = "Nice to meet you!"
        TestFun = strArrTmp
    End FunctionPrivate Sub Form_Load()
        strArr = TestFun    
        MsgBox strArr(0) & vbCrLf & vbCrLf & strArr(1), vbOKOnly Or vbInformation    
    End Sub
      

  8.   

    可以试一下Collection类即Private Function XX() AS Collection
    ***
    End Function
      

  9.   

    Function aa() as double()
          Dim qx(3) As Double
           qx(0)=2.0
           .....
           ......
          aa=qx
        end function
    我想在调用aaa() 时返回一个数组,系统提示提示:不能个数组负值!程序如下!
      function aaa()
         dim rx() as double
           .....
           .....
           .....
         rx=aa
      end function
      

  10.   

    或者可以这样:private sub test( arryT() as string)  
     Erase arryT
     redim arryT(2)
     arryT(0)='a'
     arryT(1)='b'
     arryT(2)='c'  
    end sub调用:
    dim zz() as string 
    ?debug.print zz(0)
      

  11.   

    返回一个 object 相干什么干什么
      

  12.   

    从函数返回数组
    从一个函数返回一组值是可能实现的。例如,从一个函数返回一组字节而不必将其先转换为一个字符串然后再转换回来。下面是一个返回字节数组的函数的简单示例:Private Sub Form_Load()
       Dim b As Byte
       Dim I As Integer
       Dim ReturnArray() As Byte
       i  = Cbyte(54)
       ReturnArray() = ArrayFunction(b)
       For i = 0 To Ubound(ReturnArray)
          Debug.Print ReturnArray(i)
       Next
    End SubPublic Function ArrayFunction(b As Byte) As Byte()
       Dim x(2) As Byte
       x(0) = b
       x(1) = b + CByte(200)
       x(2) = b + b
       ArrayFunction = x   
    End Function
      

  13.   

    从函数返回数组
    从一个函数返回一组值是可能实现的。例如,从一个函数返回一组字节而不必将其先转换为一个字符串然后再转换回来。下面是一个返回字节数组的函数的简单示例:Private Sub Form_Load()
       Dim b As Byte
       Dim I As Integer
       Dim ReturnArray() As Byte
       i  = Cbyte(54)
       ReturnArray() = ArrayFunction(b)
       For i = 0 To Ubound(ReturnArray)
          Debug.Print ReturnArray(i)
       Next
    End SubPublic Function ArrayFunction(b As Byte) As Byte()
       Dim x(2) As Byte
       x(0) = b
       x(1) = b + CByte(200)
       x(2) = b + b
       ArrayFunction = x   
    End Function在运行以上示例后, ReturnArray() 是一个三元素数组,其中包含了分配给 ArrayFunction 中数组的值。注意,Exit Function 语句将一个数组作为参数传递;且数组的数据类型必须和函数的数据类型相同(在本例中是字节)。因为这是一个函数调用,传递数组时不必带括号。注意   尽管可以通过赋值给另一个数组(ArrayFunction = x())来返回一个数组,但出于性能方面的考虑,并不推荐使用这种方法。必须为返回数组的函数指定一个类型;这个类型可以是 Variant。这样一来,Function X() As Variant() 是有效的而 Function X() As () 将失败。当调用一个返回数组的函数时,用来保存返回值的变量也必须是一个数组,而且其数据类型必须和函数相同,否则将显示一个“类型不匹配”的错误。