我正在创建一个UDF,它将返回变量/字符串的2D数组 . 我想在excel中很好地显示这个返回的数组,并在输入UDF函数的单元格中显示数组的左上角元素 .

基本上我的功能是:

Function func(sql as String)

    Dim Password As String
    Dim Server_Name As String
    Dim User_ID As String
    Dim Database_Name As String

    Server_Name = "XXXXXXXX"
    Database_Name = "YYYYYY"
    User_ID = "zzzzzz"
    Password = "vvvvvvvvv"

    Set rs = CreateObject("ADODB.Recordset")
    Set cn = CreateObject("ADODB.Connection")

     cn.Open "Driver={MySQL ODBC 5.3 Unicode Driver};Server=" & _
       Server_Name & ";Database=" & Database_Name & _
       ";Uid=" & User_ID & ";Pwd=" & Password & ";"
     rs.Open sql, cn, adOpenStatic

     result = rs.GetRows()
     function_caller = Application.Caller.Address

     If VarType(result) = 8204 Then
        For r = 0 To UBound(result, 1)
           For c = 0 To UBound(result, 2)
             Range(function_caller).Offset(r, c).Value = result(r, c)
           Next
        Next
     End If

End Function

当我在C10单元格中输入以下公式

=func("select * from db.sample_table")

假设运行SQL返回一个包含5行6列的数组,我希望数组可以很好地显示在C10:H14范围内 . 当我点击C10鼠标时,我将能够看到我的公式 .

我知道UDF返回值不能写入调用udf的单元格以外的任何单元格 . 因此,我尝试在UDF完成执行之前将我的数组填充到单元格中 . 但是,上面的代码只会在C10单元格中显示“0” .