ADODB - Tạo hàm UDF trả kết quả là mảng động

Liên hệ QC

FatBear

Thành viên hoạt động
Tham gia
28/1/13
Bài viết
120
Được thích
69
Chẳng là em đang học ADODB, và hiện tại e đang thử tạo một hàm UDF dùng ADODB truy vấn SQL để lấy dữ liệu như hình dưới.
Vấn đề gặp phải của em là khi em gõ hàm ở một ô, nhưng khi kết thúc công thức thì nó chỉ trả kết quả ở ô đó,
mà không tự động resize và trả kết quả theo kích thước mảng đã được xử lý ở trong code.
Còn ở hình dưới là em đã phải tự chọn kích thước kết quả sẽ ra sau đó gõ công thức thì lại ra đầy đủ.
Mong các anh chị đi qua giúp đỡ em.
Em xin cảm ơn !
Mã:
Function fSQL(strSQL As String) As Variant
Dim cnn As Object, lrs As Object
Dim Arr() As Variant
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
With cnn
    If Val(Application.Version) < 12 Then
        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                & "Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No"";"
    Else
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" _
                & "Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"";"
    End If
    .Open
End With
lrs.Open strSQL, cnn, 3, 1
Arr = lrs.GetRows
fSQL = Application.Transpose(Arr)
cnn.Close
Set lrs = Nothing
Set cnn = Nothing
End Function
1623311696285.png
 

File đính kèm

  • test.xlsb
    17.9 KB · Đọc: 10
Web KT
Back
Top Bottom