Я создаю UDF, который будет возвращать двумерный массив варианта / строки.Я хочу отобразить этот возвращенный массив в 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.Однако приведенный выше код будет отображать только «0» в ячейке C10.