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 !
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