Xin chào a chị. em muốn tạo drop down list có gợi ý cho tất cả các ô ở cột C, D ở Sheet input here. Có cách nào khi mình kích vào nút xoả xuống nó sẽ hiện hộp thoại để mình gõ vào đó mặt hàng cần tìm cho nhanh hoặc mình chỉ cần gõ từ gợi ý nó sẽ hiện ra danh sách chứa từ gợi ý như trong nút search của filter không? Mọi người giúp em với, em cảm ơn nhiều.
Dữ liệu cột D sẽ lấy từ Sheet CD, cột C sẽ lấy của Sheet SP
Xin chào a chị. em muốn tạo drop down list có gợi ý cho tất cả các ô ở cột C, D ở Sheet input here. Có cách nào khi mình kích vào nút xoả xuống nó sẽ hiện hộp thoại để mình gõ vào đó mặt hàng cần tìm cho nhanh hoặc mình chỉ cần gõ từ gợi ý nó sẽ hiện ra danh sách chứa từ gợi ý như trong nút search của filter không? Mọi người giúp em với, em cảm ơn nhiều.
Dữ liệu cột D sẽ lấy từ Sheet CD, cột C sẽ lấy của Sheet SP
cảm ơn bạn. cái này mình có thử sài qua rồi. mình lấy dữ liệu từ 2 sheet khác nhau trên 2 cột khác nhau của file nhập. nên cái này không áp dụng được á bạn. bạn xem qua file xem có cách nào khác không ? cảm ơn bạn
Xin chào a chị. em muốn tạo drop down list có gợi ý cho tất cả các ô ở cột C, D ở Sheet input here. Có cách nào khi mình kích vào nút xoả xuống nó sẽ hiện hộp thoại để mình gõ vào đó mặt hàng cần tìm cho nhanh hoặc mình chỉ cần gõ từ gợi ý nó sẽ hiện ra danh sách chứa từ gợi ý như trong nút search của filter không? Mọi người giúp em với, em cảm ơn nhiều.
Dữ liệu cột D sẽ lấy từ Sheet CD, cột C sẽ lấy của Sheet SP
Làm theo ý hiểu của bản thân.
Trong khi chờ đợi các giải pháp khác hãy thử xem cách này tôi vẫn thường làm (sử dụng 1 textbox và 1 listbox).
Sử dung: khi kích chuột vào 1 ô trong cột C hiện lên 1 textbox và 1 lisbox, gõ 1 ký tự gì đó vào Textbox listbox sẽ có điều mình cần , nhấn chuột chọn 1 dòng trong listbox==> ô active sẽ nhận giá trị của dòng listbox vừa chọn, đồng thời textbox và listbox biến mất.
P/s: Làm cách này sẽ tiện hơn và nhanh rất nhiều so với sử dụng Data validation (với list có rất rất nhiều dòng)
Đối với cột D làm tương tự.
Xem file
Làm theo ý hiểu của bản thân.
Trong khi chờ đợi các giải pháp khác hãy thử xem cách này tôi vẫn thường làm (sử dụng 1 textbox và 1 listbox).
Sử dung: khi kích chuột vào 1 ô trong cột C hiện lên 1 textbox và 1 lisbox, gõ 1 ký tự gì đó vào Textbox listbox sẽ có điều mình cần , nhấn chuột chọn 1 dòng trong listbox==> ô active sẽ nhận giá trị của dòng listbox vừa chọn, đồng thời textbox và listbox biến mất.
P/s: Làm cách này sẽ tiện hơn và nhanh rất nhiều so với sử dụng Data validation (với list có rất rất nhiều dòng)
Đối với cột D làm tương tự.
Xem file
Mình đã xem qua file và cảm ơn bạn đã hỗ trợ. Tuy nhiên textbox vẫn đang phân biệt chữ in hoa và chữ thường + chỉ hiện danh sách gợi ý theo chữ cái đầu của list. Bạn có cách nào tối ưu được cái vấn đề này không.
Mình đã xem qua file và cảm ơn bạn đã hỗ trợ. Tuy nhiên textbox vẫn đang phân biệt chữ in hoa và chữ thường + chỉ hiện danh sách gợi ý theo chữ cái đầu của list. Bạn có cách nào tối ưu được cái vấn đề này không.
Ý bạn là sao? chẳng phải là khi bạn cần tìm tên 1 mặt hàng (hay là tên công việc,....) nào đó thì bạn sẽ sẽ chữ đầu tiên xuất hiện trong đầu bạn vào hay là bạn gõ chữ khác nằm trong chuỗi. (ví dụ : có danh sách các công việc: đi làm, đi chơi, ăn trưa, Gọi điện cho bồ, gọi điện cho con, trả tiền điện..... thì khi cần gọi điện cho ai đó chẳng lẽ bạn lại Gõ chữ đ vào textbox tìm kiếm hay là gõ chữ G-Cái từ xuất hiện đầu tiên trong đầu bạn phải là chữ Gọi chứ không phải là điện, hay bồ, hay con.)
Tuy nhiên để làm theo ý bạn thì Thay code trong module2 bằng code này
Mã:
Option Explicit
Option Compare Text
Sub loc()
Dim DL(), i As Long
DL = Sheets("SP").Range("B8:B550").Value
Sheet1.ListBox1.Clear
For i = 1 To UBound(DL)
If DL(i, 1) <> "" Then
If DL(i, 1) Like "*" & Sheet1.TextBox1.Value & "*" Then
Sheet1.ListBox1.AddItem DL(i, 1)
End If
End If
Next
End Sub
Thực ra là thêm dòng Option Compare Text để không biệt chữ hoa chữ thường
và thêm "*" & vào dòng If DL(i, 1) Like Sheet1.TextBox1.Value & "*" Then... để tìm trong bất cứ đâu trong chuỗi.
Ý bạn là sao? chẳng phải là khi bạn cần tìm tên 1 mặt hàng (hay là tên công việc,....) nào đó thì bạn sẽ sẽ chữ đầu tiên xuất hiện trong đầu bạn vào hay là bạn gõ chữ khác nằm trong chuỗi. (ví dụ : có danh sách các công việc: đi làm, đi chơi, ăn trưa, Gọi điện cho bồ, gọi điện cho con, trả tiền điện..... thì khi cần gọi điện cho ai đó chẳng lẽ bạn lại Gõ chữ đ vào textbox tìm kiếm hay là gõ chữ G-Cái từ xuất hiện đầu tiên trong đầu bạn phải là chữ Gọi chứ không phải là điện, hay bồ, hay con.)
Tuy nhiên để làm theo ý bạn thì Thay code trong module2 bằng code này
Mã:
Option Explicit
Option Compare Text
Sub loc()
Dim DL(), i As Long
DL = Sheets("SP").Range("B8:B550").Value
Sheet1.ListBox1.Clear
For i = 1 To UBound(DL)
If DL(i, 1) <> "" Then
If DL(i, 1) Like "*" & Sheet1.TextBox1.Value & "*" Then
Sheet1.ListBox1.AddItem DL(i, 1)
End If
End If
Next
End Sub
Thực ra là thêm dòng Option Compare Text để không biệt chữ hoa chữ thường
và thêm "*" & vào dòng If DL(i, 1) Like Sheet1.TextBox1.Value & "*" Then... để tìm trong bất cứ đâu trong chuỗi.
cảm ơn bạn. mình mới tiếp xúc với VBA nên hơi gà mờ. Cho mình hỏi thêm chút. đối với cột D. mình làm tương tự nhưng trong 1 sheet không cho phép sử dụng 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) thì phải làm thế nào bạn
cảm ơn bạn. mình mới tiếp xúc với VBA nên hơi gà mờ. Cho mình hỏi thêm chút. đối với cột D. mình làm tương tự nhưng trong 1 sheet không cho phép sử dụng 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) thì phải làm thế nào bạn
cảm ơn bạn. mình mới tiếp xúc với VBA nên hơi gà mờ. Cho mình hỏi thêm chút. đối với cột D. mình làm tương tự nhưng trong 1 sheet không cho phép sử dụng 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range) thì phải làm thế nào bạn
Như anh @Maika 8008 đã hướng dẫn bạn thử làm theo xem sao cụ thể:
Trong Worksheet_SelectionChange(ByVal Target As Range) có if not Intersec(target, range("C..:C...") is nothing then.....
Bạn copy từ IF not... đến end if và thay Chỗ range("B...:B...") thành range("D....")
===>chạy thử.