Tìm kiếm bằng Userform

Liên hệ QC

nmhung49

Thành viên tích cực
Tham gia
20/8/09
Bài viết
1,186
Được thích
1,337
Em đang làm form tìm kiếm code được copy từ diễn đàn mà bị lỗi với yêu cầu Ô textbox tìm kiếm khách hàng nếu mình nhấn tìm kiếm thì hiện trọng Listbox và số liệu khách hàng này sẽ hiện trên label 2, Trong Listbox thì khi nhấn vào người nào thì sẽ hiện qua label, Đoạn code này e copy của anh Domfootwear mà ứng dụng không được mong anh chị giúp đỡ. Thanks
 
Em đang làm form tìm kiếm code được copy từ diễn đàn mà bị lỗi với yêu cầu Ô textbox tìm kiếm khách hàng nếu mình nhấn tìm kiếm thì hiện trọng Listbox và số liệu khách hàng này sẽ hiện trên label 2, Trong Listbox thì khi nhấn vào người nào thì sẽ hiện qua label, Đoạn code này e copy của anh Domfootwear mà ứng dụng không được mong anh chị giúp đỡ. Thanks

Bạn xem file đính kèm coi đúng ý chưa nhé.
 

File đính kèm

Upvote 0
Em đang làm form tìm kiếm code được copy từ diễn đàn mà bị lỗi với yêu cầu Ô textbox tìm kiếm khách hàng nếu mình nhấn tìm kiếm thì hiện trọng Listbox và số liệu khách hàng này sẽ hiện trên label 2, Trong Listbox thì khi nhấn vào người nào thì sẽ hiện qua label, Đoạn code này e copy của anh Domfootwear mà ứng dụng không được mong anh chị giúp đỡ. Thanks
Hình như thiếu đoạn code đưa dữ liệu vào listbox1, Dùng thử code tạo 1 name động rồi đưa vào RowSource xem sao! Thêm vào đó chỉnh một xíu thao tác lúc click chuột vào listbox1 sẽ đem tên khách hàng lên texbox1 luôn thể.
 

File đính kèm

Upvote 0
Thay vì làm 1 cái Label, sau đó thu gôm dữ liệu (gồm 6 trường) và gán vào Label này... vậy tại sao không làm 6 cái Label nhỉ?
Tôi thấy như vậy vừa đẹp và code lại gọn hơn rất nhiều
 
Upvote 0
Vậy anh Ndu hướng dẫn thêm để tụi em có thể tham khảo cách của Ndu được không, em đang tìm hiểu code mà có nhiều đoạn code cao siêu quá nên khó nuốt quá, Vậy anh Ndu hướng dẫn một tay nhen. Thanks
 
Upvote 0
Vậy anh Ndu hướng dẫn thêm để tụi em có thể tham khảo cách của Ndu được không, em đang tìm hiểu code mà có nhiều đoạn code cao siêu quá nên khó nuốt quá, Vậy anh Ndu hướng dẫn một tay nhen. Thanks
Tôi chỉ sửa lại phần ListBox và các Label thôi
Code của ListBox chỉ cần vầy
PHP:
Private Sub ListBox1_Click()
  Dim SourceRange As Range
  Set SourceRange = Range(ListBox1.RowSource)
  With ListBox1
    Lb07.Caption = SourceRange(.ListIndex + 1, 1)
    Lb08.Caption = SourceRange(.ListIndex + 1, 2)
    Lb09.Caption = SourceRange(.ListIndex + 1, 3)
    Lb10.Caption = SourceRange(.ListIndex + 1, 4)
    Lb11.Caption = SourceRange(.ListIndex + 1, 5)
    Lb12.Caption = SourceRange(.ListIndex + 1, 6)
  End With
End Sub
Phần RowSource tôi thiết lập sẳn trong ListBox Properties luôn (khỏi viết code)
Nói thêm:
- Phần lớn các Control của UserForm đều hiển thị được tiếng Việt Unicode, tại sao lại không dùng nhỉ? (mạn phép chuyển sang tiếng Việt Unicode luôn)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Với cách bố trí các control như file đính kèm của tôi thì code trên còn có thể sửa như vầy:
PHP:
Private Sub ListBox1_Click()
  Dim i As Long
  With Range(ListBox1.RowSource)
    For i = 1 To 6
      Me.Controls("Lb" & Format(i + 6, "00"))= .Cells(ListBox1.ListIndex + 1, i)
    Next
  End With
End Sub
Đặc biệt nếu có nhiều label cần thể hiện thông tin thì vòng lập này tỏ ra ưu điểm tuyệt vời ---> Đở mất công viết code cho từng label ---> Bao nhiêu Lable cũng chỉ nhiêu đó code!
------------------------
Ngoài ra code của TextBox có thể chơi "tà đạo" thế này:
PHP:
Private Sub TextBox1_Change()
  With Range(ListBox1.RowSource).Resize(, 1)
    ListBox1.Selected(.Find(TextBox1, , , xlPart).Row - .Row) = True
  End With
End Sub
Ngắn gọn, không cần khai báo biến
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
nâng cấp userform

Dear all:
Thanks anh chị đã quan tâm nhưng em có thêm ý tưởng này không biết mình làm được trên userform tại vì nếu em thay đổi trường tìm kiếm trên userform hì những label hiện thị vùng dữ liệu sẽ không đúng Khi đó vòng lập For của a Ndu sẽ bị sai không biết có cách khắc phục được không a? Nếu mình có thể làm thêm nút điều kiện tìm kiếm nữa thì sẽ tuyệt cú mèo luôn, Ví dụ theo cột Name, Code, Amount, Ngày thì khỏi chê vào đâu luôn Khi đó muốn chọn tìm kiếm theo ngày thì dữ liệu sẽ hiện trong list box là ngày v.v v.v v. Tại vì em thấy tìm kiếm trên userform hay tuyệt mà không biết viết code +-+-+-+ nên thấy bài viết của a Domfootwear có đoạn code tìm kiếm và được Ndu cải tiến nên quá là hay phải nói là tuyệt cú mèo luôn. Nếu có thể mong anh chị và các bạn cải tiến thếm Thanks
 
Upvote 0
Dear all:
Thanks anh chị đã quan tâm nhưng em có thêm ý tưởng này không biết mình làm được trên userform tại vì nếu em thay đổi trường tìm kiếm trên userform hì những label hiện thị vùng dữ liệu sẽ không đúng Khi đó vòng lập For của a Ndu sẽ bị sai không biết có cách khắc phục được không a? Nếu mình có thể làm thêm nút điều kiện tìm kiếm nữa thì sẽ tuyệt cú mèo luôn, Ví dụ theo cột Name, Code, Amount, Ngày thì khỏi chê vào đâu luôn Khi đó muốn chọn tìm kiếm theo ngày thì dữ liệu sẽ hiện trong list box là ngày v.v v.v v. Tại vì em thấy tìm kiếm trên userform hay tuyệt mà không biết viết code +-+-+-+ nên thấy bài viết của a Domfootwear có đoạn code tìm kiếm và được Ndu cải tiến nên quá là hay phải nói là tuyệt cú mèo luôn. Nếu có thể mong anh chị và các bạn cải tiến thếm Thanks
Thêm cho bạn 1 ComboBox để chọn trường (Code chẳng sửa gì nhiều)
PHP:
Private Sub UserForm_Initialize()
  With Sheet1.Range("A1").CurrentRegion
    ComboBox1.List() = WorksheetFunction.Transpose(.Resize(1))
  End With
  ComboBox1.Value = ComboBox1.List(0, 0)
End Sub
PHP:
Private Sub ComboBox1_Change()
  With Sheet1.Range("A1").CurrentRegion
    ListBox1.RowSource = Intersect(.Cells, .Offset(1, ComboBox1.ListIndex)).Resize(, 1).Address
  End With
End Sub
PHP:
Private Sub ListBox1_Click()
  Dim i As Long
  With Sheet1.Range("A1").CurrentRegion
    For i = 1 To 6
      Me.Controls("Lb" & Format(i + 6, "00")).Caption = .Cells(ListBox1.ListIndex + 2, i)
    Next
  End With
End Sub
PHP:
Private Sub TextBox1_Change()
  On Error Resume Next
  With Range(ListBox1.RowSource).Resize(, 1)
    ListBox1.Selected(.Find(TextBox1, , , xlPart).Row - .Row) = True
  End With
End Sub
Xem thử đúng ý chưa?
 

File đính kèm

Upvote 0
Cảm ơn a Ndu nhiều lắm quả là chính xác nhanh gọn lẹ tuyệt cú mèo luôn. A Ndu cho em hỏi nếu mình thêm dữ liệu ở cột G, H khi đó trong userform e sẽ xuất hiện thêm 4 label nữa không biết khi đó vòng lặp For
Mã:
[COLOR=#000000][COLOR=#0000bb][/COLOR][SIZE=3][FONT=Courier New][COLOR=#007700]Private [/COLOR][COLOR=#0000bb]Sub ListBox1_Click[/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#007700]()
  [/COLOR][COLOR=#0000bb]Dim i [/COLOR][COLOR=#007700]As [/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#0000bb]Long
  With Sheet1[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"A1"[/COLOR][COLOR=#007700]).[/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#0000bb]CurrentRegion
    [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000bb]i [/COLOR][COLOR=#007700]= [/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#0000bb]1 To 6
      Me[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Controls[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"Lb" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000bb]Format[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]i [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]6[/COLOR][COLOR=#007700], [/COLOR][COLOR=#dd0000]"00"[/COLOR][COLOR=#007700])).[/COLOR][COLOR=#0000bb]Caption [/COLOR][COLOR=#007700]= .[/COLOR][COLOR=#0000bb]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]ListBox1[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]ListIndex [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]2[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]i[/COLOR][/FONT][/SIZE][COLOR=#007700][FONT=Courier New][SIZE=3])
    [/SIZE][/FONT][/COLOR][COLOR=#0000bb][FONT=Courier New][SIZE=3]Next
  End With
End Sub  [/SIZE][/FONT]
[/COLOR][/COLOR]
Thay đổi như thế nào tại vì e thấy tên Label của anh từ Lb01 -> Lb12 nếu em thêm vào thì sẽ có 16 Label ;;;;;;;;;;; --=0
 
Upvote 0
Cảm ơn a Ndu nhiều lắm quả là chính xác nhanh gọn lẹ tuyệt cú mèo luôn. A Ndu cho em hỏi nếu mình thêm dữ liệu ở cột G, H khi đó trong userform e sẽ xuất hiện thêm 4 label nữa không biết khi đó vòng lặp For
Mã:
[COLOR=#000000][SIZE=3][FONT=Courier New][COLOR=#007700]Private [/COLOR][COLOR=#0000bb]Sub ListBox1_Click[/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#007700]()
  [/COLOR][COLOR=#0000bb]Dim i [/COLOR][COLOR=#007700]As [/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#0000bb]Long
  With Sheet1[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"A1"[/COLOR][COLOR=#007700]).[/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#0000bb]CurrentRegion
    [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000bb]i [/COLOR][COLOR=#007700]= [/COLOR][/FONT][/SIZE][SIZE=3][FONT=Courier New][COLOR=#0000bb]1 To 6
      Me[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Controls[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"Lb" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000bb]Format[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]i [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]6[/COLOR][COLOR=#007700], [/COLOR][COLOR=#dd0000]"00"[/COLOR][COLOR=#007700])).[/COLOR][COLOR=#0000bb]Caption [/COLOR][COLOR=#007700]= .[/COLOR][COLOR=#0000bb]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]ListBox1[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]ListIndex [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]2[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]i[/COLOR][/FONT][/SIZE][COLOR=#007700][FONT=Courier New][SIZE=3])
    [/SIZE][/FONT][/COLOR][COLOR=#0000bb][FONT=Courier New][SIZE=3]Next
  End With
End Sub  [/SIZE][/FONT]
[/COLOR][/COLOR]
Thay đổi như thế nào tại vì e thấy tên Label của anh từ Lb01 -> Lb12 nếu em thêm vào thì sẽ có 16 Label ;;;;;;;;;;; --=0
Bạn cứ thêm bớt gì đó cho thật đầy đủ và chính xác vào file rồi gữi lên đây ---> Ta làm luôn 1 lần nhé
----------------------------------------------------------------------------------------

Tôi gữi bạn Form tìm kiếm này, hoành tráng hơn ---> Vừa tìm và nhập liệu ---> Gần tương tự với yêu cầu của bạn (tìm trên nhiều trường)
Tham khảo file đính kèm (dữ liệu nguồn nằm tại sheet MC)
Do có thêm 1 vài hiệu ứng và có dùng đến Popup Menu nên code hơi dài ---> Bạn có thể bỏ bớt nếu không có nhu cầu
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn A Ndu nhiều lắm em làm phiền như thế là đủ rồi để em tự học em nghĩ sẽ hay hơn có chuyện gì khó hiểu thì mong A Ndu giúp đỡ. Thanks Ndu, domfootwear, cadafi giiúp đỡ nhiệt tình. Dạ có gì mong các mod bỏ qua đừng xóa bài viết này em cảm ơn
 
Upvote 0
Web KT

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

Back
Top Bottom