Làm sao để tạo textbox tìm kiếm giống google? (1 người xem)

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

Người dùng đang xem chủ đề này

Luxife

Thành viên mới
Tham gia
27/3/08
Bài viết
23
Được thích
0
Mình có 1 sheet dữ liệu, giờ muốn tạo 1 cái textbox, khi mình gõ vào 123 thì nó sẽ nhảy đến dòng ô 123, sau khi mình xóa dòng 123 đó đi thì textbox đó tự động bôi đen hoặc xóa rỗng textbox đó, nhờ mọi người giúp code nhé, tham khảo trên mạng mấy ngày nay nhưng chưa ưng ý, thanks.

Nếu được thì thêm chức năng "Alway on top", luôn hiện trong sheet mà mình tìm kiếm, bất kể khi nào nó nhảy đến thì ngon quá, hehe.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình có 1 sheet dữ liệu, giờ muốn tạo 1 cái textbox, khi mình gõ vào 123 thì nó sẽ nhảy đến dòng ô 123, sau khi mình xóa dòng 123 đó đi thì textbox đó tự động bôi đen hoặc xóa rỗng textbox đó, nhờ mọi người giúp code nhé, tham khảo trên mạng mấy ngày nay nhưng chưa ưng ý, thanks.
Bạn tham khảo file, còn chổ màu đỏ mình chưa hiểu.
 

File đính kèm

Upvote 0
Bạn tham khảo file, còn chổ màu đỏ mình chưa hiểu.

Mình làm bên xe máy, cửa hàng có tiếp nhận và nhập thông tin lên phần mềm, phần mềm xuất ra file excel để mình kiểm tra, mình gõ theo biển số để kiểm, ví dụ mình nhập 53L1-7777 vào textbox để tìm thì nó sẽ tự nhảy đến kết quả đó mà không phải nhấn Enter, mình kiểm tra nội dung của xe đó (VD gồm 10 dòng) xong thì mình bôi đen 10 dòng đó để xóa, sau khi xóa thì cái Textbox tìm kiếm nó tự xóa nội dung mình vừa tìm, hoặc khi mình đưa con trỏ vào textbox để tìm xe kế tiếp thì nó bôi đen (Select All) hoặc xóa rỗng Textbox đi để mình nhập xe khác đó. Như thế đỡ tốn thời gian hơn.
 
Upvote 0
File đính kèm ông gửi là có ý nghĩ tôi là sinh viên đang đi thi nên nhờ giúp hả =))

Nếu biết thì mai hoặc mốt trả lời cũng được, miễn sao có là ok, haha.
Tôi giúp chẳng biết bạn là cái gì kệ bạn, tôi gửi file đó theo sự hiểu biết của mình. Rõ ràng là bạn muốn nhảy tới dòng (khi mình gõ vào 123 thì nó sẽ nhảy đến dòng ô 123) chứ có nói là nhảy tới ô có giá tị bằng Textbox đâu. Nói tóm lại là biết cách làm nhưng sẽ không giúp nửa nếu không thấy file mẫu.
 
Upvote 0
File mẫu dưới file đính kèm, nó giống như mình nhấn Ctrl + F rồi gõ nội dung để tìm đó mà.
 

File đính kèm

Upvote 0
File mẫu dưới file đính kèm, nó giống như mình nhấn Ctrl + F rồi gõ nội dung để tìm đó mà.
Thế khi đang gõ trong textbox (Con trỏ đang nằm trong đây, mới gõ số 5 thôi thì nó tìm rồi) thì làm sao nhảy đến ô L4 được (Nếu được thì con trỏ đang nằm ở đây, làm sao gõ trong textbox).
 
Upvote 0
Vậy chỉ cần mình gõ trong textbox là 51L1 thì nó nhảy đến ô có 51L1 là được, xóa dòng xong thì đưa con trỏ vào textbox thì nội dung nó sẽ rỗng và ta cứ thế tiếp tục tìm xe khác. Như thế không được à bạn? Lúc trước tôi có làm 1 lần rồi mà giờ mất nên tìm lại để tiết kiệm thời gian làm việc.
 
Upvote 0
Vậy chỉ cần mình gõ trong textbox là 51L1 thì nó nhảy đến ô có 51L1 là được, xóa dòng xong thì đưa con trỏ vào textbox thì nội dung nó sẽ rỗng và ta cứ thế tiếp tục tìm xe khác. Như thế không được à bạn? Lúc trước tôi có làm 1 lần rồi mà giờ mất nên tìm lại để tiết kiệm thời gian làm việc.

Sử dụng phím tắt Crtl+F là nhanh
 
Upvote 0
Không ai có code cho con textbox đáp ứng các yêu cầu như trên sao?
 
Upvote 0
Làm theo link dưới đây:

Mã:
http://www.webketoan.vn/huong-dan-tao-o-tim-kiem-du-lieu-sieu-toc.html

Giờ biến tấu thế nào đây?
 
Upvote 0
Vậy chỉ cần mình gõ trong textbox là 51L1 thì nó nhảy đến ô có 51L1 là được, xóa dòng xong thì đưa con trỏ vào textbox thì nội dung nó sẽ rỗng và ta cứ thế tiếp tục tìm xe khác. Như thế không được à bạn? Lúc trước tôi có làm 1 lần rồi mà giờ mất nên tìm lại để tiết kiệm thời gian làm việc.
Bạn xem file thử được không? nhớ gõ xong nhấn Enter để xem kết quả.
 

File đính kèm

Upvote 0
Bạn xem file thử được không? nhớ gõ xong nhấn Enter để xem kết quả.

Giờ không cần nhấn Enter mà nó tự nhảy đến ô cần tìm được không bác?
VD gõ đến 53L1 thì nó nhảy đến ô có chứa nội dung 53L1 luôn chứ không cần phải Enter ấy, cảm ơn bác.
 
Upvote 0
(/ậy thì bạn mới gõ 1 kí số 5 thì nó đã nhảy đến các ô có kí số là 5 ư?
Hay bạn muốn sau khi gõ xong 4 kí tự vô TextBox (là mã NV hay vật tư luôn có độ dài là 4) thì macro tự động tìm đến ô chứa mã này?
 
Upvote 0
(/ậy thì bạn mới gõ 1 kí số 5 thì nó đã nhảy đến các ô có kí số là 5 ư?
Hay bạn muốn sau khi gõ xong 4 kí tự vô TextBox (là mã NV hay vật tư luôn có độ dài là 4) thì macro tự động tìm đến ô chứa mã này?

Cái yêu cầu thứ 2 đó bác, vì mình tìm theo biển số nên chỉ cần 4 ký tự là được, thêm nữa là nếu trong sheet đó có 1 khách sửa xe nhiều lần, BS 53L1-7777 thì mình gõ 7777 nó sẽ nhảy đến lần sửa đầu tiên (theo thứ tự từ đầu sheet đến cuối sheet), sau đó nhấn enter thì nó nhảy đến lần sửa thứ 2, đơn giản thế này:

ekjhksehfkshèkfh
sfsfsfsfsffs 53L1-7777 Nguyễn Thị A - Thay nhớt, ngày 16.01.18

lhalhdưlahlh 53L1-7777 Nguyễn Thị A - Thay nhông xích, ngày 18.01.18
 
Upvote 0
Lên nào!

Đang cần thêm chức năng đưa con trỏ đến nội dung cần tìm và nhấn Enter trong textbox thì nó tìm tiếp nếu có 2 xe có biển số giống nhau trong 1 sheet.
 
Upvote 0
Lên lần nữa cho các bác biết vào giúp :D

Chỉ cần thêm chức năng tìm kiếm giá trị tiếp theo trong textbox, VD: nhập 7777 thì nó nhảy đến ô chứa 7777 (đầu sheet), nhấn Enter phát nữa thì nó nhảy đến 7777 (giữa sheet), lần nữa thì nhảy đến 7777 (cuối sheet)

Cảm ơn các bác.
 
Upvote 0
File này bác gửi đâu có textbox và code gì đâu?
Bác check lại với, thanks :D
Mình bỏ Textbox rồi (Lý do cái Textbox và ô có gì khác đâu nếu nhìn vào) và thay vì gõ vào textbox bây giờ bạn gõ vào cái ô màu vàng đó và nhấn enter thử xem.
 
Upvote 0
Textbox có thể xử lý always on top, thiết lập enter trong textbox cũng đc nhưng phải kết hợp check senkeys. Còn di chuyển cuối hay đầu row thì thêm vài xử lý goto.
 
Upvote 0
Textbox có thể xử lý always on top, thiết lập enter trong textbox cũng đc nhưng phải kết hợp check senkeys. Còn di chuyển cuối hay đầu row thì thêm vài xử lý goto.
Câu này không sai, nhưng trong file thực tế áp dụng trong trường hợp này là không hề sử dụng tới những cái bạn nêu ở đây.
 
Upvote 0
Câu này không sai, nhưng trong file thực tế áp dụng trong trường hợp này là không hề sử dụng tới những cái bạn nêu ở đây.
Em đã vọc một đoạn code theo cấu trúc như sau. Tuy trường hợp này không nhất thiết phải phức tạp vậy, nhưng việc tìm hiểu cách code cũng khá thú vị.
1. Một textbox
2. Các code sử dụng
+ Code kiểm tra textbox là rỗng hay có giá trị:
+ Nếu rỗng thì set màu xám
+ Nếu có giá trị kiểm tra xem có phải là số không
+ Nếu số: Kiểm tra xem có vượt quá giới hạn Row không
+ Nếu có thì báo lỗi, thoát
+ Nếu không: Chạy code kiểm ta senkeys enter
+ Nếu đúng di chuyển đến số hợp lệ
+ Code kiểm tra vùng hiển thị dữ liệu để set chức năng always on top.
 
Upvote 0
Thử cách củ chuối này xem sao?
Anh giaiphap giúp em sửa lại code tìm kiếm theo vùng địa chỉ được không ạ. File của anh là tìm kiếm nội dung trên toàn bộ sheet1, giờ giả sử em chỉ muốn tìm từ ô K4:M10 thì làm thế nào ạ. Em loay hoay chưa sửa được
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$1" Then
    If Target.Value = "" Then Exit Sub
    UserForm1.Show 0
    UserForm1.ListBox1.Clear
Dim firstAddress As String, c, rng As Range
With Worksheets(1).UsedRange
    Set rng = Sheet1.Range("N1:N1000")
    Set c = rng.Find(Target.Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            If c.Address <> Target.Address Then UserForm1.ListBox1.AddItem c.Address
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
End If
End Sub
Em sửa thế mà hổng được anh ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Anh giaiphap giúp em sửa lại code tìm kiếm theo vùng địa chỉ được không ạ. File của anh là tìm kiếm nội dung trên toàn bộ sheet1, giờ giả sử em chỉ muốn tìm từ ô K4:M10 thì làm thế nào ạ. Em loay hoay chưa sửa được
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$1" Then
    If Target.Value = "" Then Exit Sub
    UserForm1.Show 0
    UserForm1.ListBox1.Clear
Dim firstAddress As String, c, rng As Range
With Worksheets(1).UsedRange
    Set rng = Sheet1.Range("N1:N1000")
    Set c = rng.Find(Target.Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            If c.Address <> Target.Address Then UserForm1.ListBox1.AddItem c.Address
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
End If
End Sub
Em sửa thế mà hổng được anh ạ
Chổ màu đỏ nè bạn.
Set rng = Sheet1.Range("K4:M10")
 
Upvote 0
Chổ màu đỏ nè bạn.
Set rng = Sheet1.Range("K4:M10")
[Bác giaiphap cho em phiền tý nữa ạ, em chưa hiểu chỗ này lắm:
Mã:
 If c.Address <> Target.Address Then UserForm1.ListBox1.AddItem c.Address
Giả sử em muốn tạo 2 cột dữ liệu trong UserForm1.ListBox1 (Cột thứ nhất là c.Address, cột thứ 2 là giá trị c) thì phải làm thế nào ạ
 
Upvote 0
[Bác giaiphap cho em phiền tý nữa ạ, em chưa hiểu chỗ này lắm:
Mã:
 If c.Address <> Target.Address Then UserForm1.ListBox1.AddItem c.Address
Giả sử em muốn tạo 2 cột dữ liệu trong UserForm1.ListBox1 (Cột thứ nhất là c.Address, cột thứ 2 là giá trị c) thì phải làm thế nào ạ
Bạn xem lại file nhé!
 

File đính kèm

Upvote 0

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

Back
Top Bottom