code tim kiếm

  • Thread starter Thread starter doancu
  • Ngày gửi Ngày gửi
Liên hệ QC

doancu

Thành viên mới
Tham gia
20/1/11
Bài viết
14
Được thích
0
Giới tính
Nam
mình có viết 1 đoạn code tiềm kiếm theo giống trên mạng ma no ko chạy , nhơ bạn nào biết chỉ minh với.
đây la đương link https://www.razakmcr.in/2017/10/ms-excell-listbox-search-by-textbox-vba.html

Private Sub UserForm_Initialize()
Me.TextBox1.SetFocus
End Sub

Private Sub TextBox1_Change()
Me.TextBox1.Text = StrConv(Me.TextBox1.Text, vbProperCase)
Dim i As Long
Me.ListBox1.Clear
On Error Resume Next
For i = 1 To Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))
a = Len(Me.TextBox1.Text)
If Left(Sheet1.Cells(i, 1).Text, a) = Left(Me.TextBox1.Text, a) Then
Me.ListBox1.AddItem Sheet1.Cells(i, 1).Value
Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Sheet1.Cells(i, 2).Value
End If
Next i
End Sub
 

File đính kèm

VBE không thể hiểu mệnh đề: Sheet1.Cells(i, 1).Text là gì; Cũng may là nó không báo lỗi mới tệ

Mệnh đề này hình như cũng có tí tẹo vấn đề: Left(Me.TextBox1.Text, a)
Một khi a = Len(Me.TextBox1.Text)
 
Upvote 0
Private Sub TextBox1_Change()
Me.TextBox1.Text = StrConv(Me.TextBox1.Text, vbProperCase)
Dim i As Long
Me.ListBox1.Clear
On Error Resume Next
For i = 1 To Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))
a = Len(Me.TextBox1.Text)
If Left(Sheet1.Cells(i, 1).Text, a) = Left(Me.TextBox1.Text, a) Then
Me.ListBox1.AddItem Sheet1.Cells(i, 1).Value
Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Sheet1.Cells(i, 2).Value
End If
Next i
End Sub

- Đoạn code trên chạy trên máy tôi không báo lỗi nhé. (Excel 2013)
- Nên sửa lại chút để nhìn có nó tường minh hơn.
- Kéo biến a ra khỏi vòng lặp vì chỉ cần gán nó 1 lần, không cần mỗi lần next i lại gán lại biến a.
- Bỏ 'On Error Resume Next'. Chỉ dùng khi bạn biết chắc chắn chỉ có phát sinh 1 lỗi và lỗi đó có thể cho qua để chạy tiếp code.


Mã:
Private Sub TextBox1_Change()

    Dim strTextSearch As String
    Dim i As Long, a As Integer

    strTextSearch = StrConv(Me.TextBox1.Text, vbProperCase)
    a = Len(strTextSearch)
    Me.ListBox1.Clear

    For i = 1 To Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))
        If Left(Sheet1.Cells(i, 1).Text, a) = strTextSearch Then
            Me.ListBox1.AddItem Sheet1.Cells(i, 1).Value
            Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Sheet1.Cells(i, 2).Value
        End If
    Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
- Đoạn code trên chạy trên máy tôi không báo lỗi nhé. (Excel 2013)
- Nên sửa lại chút để nhìn có nó tường minh hơn.
- Kéo biến a ra khỏi vòng lặp vì chỉ cần gán nó 1 lần, không cần mỗi lần next i lại gán lại biến a.
- Bỏ 'On Error Resume Next'. Chỉ dùng khi bạn biết chắc chắn chỉ có phát sinh 1 lỗi và lỗi đó có thể cho qua để chạy tiếp code.


Mã:
Private Sub TextBox1_Change()

    Dim strTextSearch As String
    Dim i As Long, a As Integer

    strTextSearch = StrConv(Me.TextBox1.Text, vbProperCase)
    a = Len(strTextSearch)
    Me.ListBox1.Clear

    For i = 1 To Application.WorksheetFunction.CountA(Sheet1.Range("A:A"))
        If Left(Sheet1.Cells(i, 1).Text, a) = strTextSearch Then
            Me.ListBox1.AddItem Sheet1.Cells(i, 1).Value
            Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Sheet1.Cells(i, 2).Value
        End If
    Next i
End Sub
thanks! bạn ơi doan code bạn sủa lại chỉ chạy tìm kiếm số chứ chử ko tìm đc, bạn xem lại dùm mình với nha
 
Upvote 0
Cảm ơn! bạn ơi doan code bạn sủa lại chỉ chạy tìm kiếm số chứ chử ko tìm đc, bạn xem lại dùm mình với nha

Tôi chỉ sửa code theo hướng dẫn trên mạng bạn đề cập thôi chứ không sửa code "tìm kiếm theo nhiều cột" nhé.
Để tôi xem lại đã.
 
Upvote 0
Cảm ơn! bạn ơi doan code bạn sủa lại chỉ chạy tìm kiếm số chứ chử ko tìm đc, bạn xem lại dùm mình với nha
Thêm điều kiện ở IF
Mã:
If Left(Sheet1.Cells(i, 1).Value, a) = strTextSearch Or _
            Left(Sheet1.Cells(i, 2).Value, a) = strTextSearch Then
Nếu thấy không cần thiết thì bỏ hàm StrConv
Mã:
strTextSearch = Me.TextBox1.Text
 
Upvote 0
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom