我正在创建一个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” .