- Tham gia
- 6/8/06
- Bài viết
- 3,260
- Được thích
- 3,787
Đây là 1 bài toán tình cờ phát hiện ra về phương thức Find.
Đây là code theo kiểu của bác BillHọc theo Help)
Còn đây là code của bác Phạm Duy Long
Một điều đáng ngạc nhiên là Code theo kiểu Bill bao giờ cũng mất gần gấp 2 thời gian.
Vậy các cao thủ cho hỏi : tại sao lại thế, nếu muốn làm như Bill và cải thiện về tốc độ thì như thế nào ???
Các bác xem File nhé .
To : ttphong : Sao cậu lại không cho vào thẻ PHP ??
Thân!
Chọn Mã Khách hàng.7zip
Đây là code theo kiểu của bác BillHọc theo Help)
PHP:
Sub KiemTra2()
Dim HC As Long, i As Long, r As Long
Dim Mang As Range, TimThay As Range
Dim StrFind As String, CellDau As String
Sheets("DM.KH").Select
MaKhach.Chon.Default = True
MaKhach.Thoat.Cancel = True
MaKhach.LB.Clear
StrFind = Trim(MaKhach.TB.Text)
i = 0
Set Mang = Sheet3.Range("B5:C60000")
With Mang
Set TimThay = .Find(What:=StrFind)
If Not TimThay Is Nothing Then
CellDau = TimThay.Address
Do
r = TimThay.Row
MaKhach.LB.AddItem Cells(r, 2)
MaKhach.LB.List(i, 1) = Cells(r, 3)
i = i + 1
Set TimThay = .FindNext(TimThay)
Loop While Not TimThay Is Nothing And CellDau <> TimThay.Address
End If
End With
End Sub
PHP:
Sub KiemTra1()
Dim rng As String, rng1 As String, rng2 As String, StrFind As String
Dim r As Integer, i As Integer
Sheets("DM.KH").Select
MaKhach.Chon.Default = True
MaKhach.Thoat.Cancel = True
MaKhach.LB.Clear
StrFind = LCase(Trim(MaKhach.TB.Text))
rng1 = "$B$5"
rng = ""
On Error Resume Next
i = 0
Do
rng2 = Columns("B:C").Find(What:=StrFind, After:=Range(rng1)).Address
If Err.Number > 0 Or rng2 = rng Then Exit Do
rng1 = rng2
If rng = "" Then rng = rng2
If r <> Range(rng2).Row Then
r = Range(rng2).Row
MaKhach.LB.AddItem Cells(r, 2)
MaKhach.LB.List(i, 1) = Cells(r, 3)
i = i + 1
End If
Loop
End Sub
Vậy các cao thủ cho hỏi : tại sao lại thế, nếu muốn làm như Bill và cải thiện về tốc độ thì như thế nào ???
Các bác xem File nhé .
To : ttphong : Sao cậu lại không cho vào thẻ PHP ??
Thân!
Chọn Mã Khách hàng.7zip
Chỉnh sửa lần cuối bởi điều hành viên: