Hai Lua cho xem code nạp listbox bằng ADO với.
Em nạp bình thường thôi anh.
[GPECODE=sql]Private Sub txtSearch_Click()
Dim TG As Double, adoConn As Object, adoRS As Object
TG = Timer
Set adoConn = CreateObject("ADODB.Connection")
Set adoRS = CreateObject("ADODB.Recordset")
With adoConn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
.Open
End With
With adoRS
.ActiveConnection = adoConn
.Open "select * from " & _
"(SELECT * FROM [BangGia1$A2:H60000] " & _
"Union ALL " & _
"SELECT * FROM [BangGia2$A2:H60000] " & _
"Union ALL " & _
"SELECT * FROM [BangGia3$A2:H60000])"
If Not (.bof And .EOF) Then
lstResult.ColumnCount = .fields.Count
lstResult.Column = .getrows()
MsgBox Timer - TG
End If
.Close
End With
Set adoRS = Nothing
adoConn.Close: Set adoConn = Nothing
End Sub
[/GPECODE]
Do dữ liệu nằm trên 3 sheet nên ta phải mất thời gian để gom nhóm nó lại, xong ta đưa nó vào list.
Với yêu cầu đề bài em đưa ý kiến thế này, chuyển toàn bộ dữ liệu đó sang 1 bảng access, dùng excel truy vấn vào bảng đó. Như vậy sẽ làm nhẹ file excel cũng như truy vấn sẽ tăng lên đáng kể.
Về tốc độ thì khi truy vấn đến file access và nạp toàn bộ dữ liệu vào list chỉ mất 2 giây. Nếu thêm 2 điều kiện lọc thì chỉ mất 0.373... giây.
http://www.4shared.com/rar/Ll47Goq3/NapListBox.html