Giúp Code nhập tìm kiếm hiện các từ liên quan trong Combobox ( đã làm được 50 % ) (1 người xem)

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

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/7/14
Bài viết
355
Được thích
31
Tình hình là câu hỏi này mình hỏi lần 2, vì lần 1 không có ai trả lời giúp mình, lần này các bạn giúp mình cái tại mình đang cần để giúp cho công việc thuận lợi nhanh chóng

Minh xin nhắc lại câu hỏi các bạn giúp mình với :
Tên hàng mình đã nhập sẳng trong vùng A2:A23 . Mình muốn nhập vài từ liên quan tại ô F1 thì sẽ hiện ra 1 list danh sách tên hàng có liên quan đến từ mình đã nhập tại ô F1.

Ví dụ mình nhập từ " Kem" tại ô F1 thì những từ có liên quan đến từ kem sẽ hiện ra
- Kem sữa chua
- Chua sữa kem
- Chua kem sữa
-...... Nói chung tên hàng nào có từ "kem" thì sẽ hiện ra hết

Mình đã làm được bằng cách tạo công thức mãng và dùng list validation tất cả đều ok , nhưng muốn bằng Combobox cho nhanh. chứ list validation nhập vài từ xong rồi enter rồi kích vào lại rồi chọn rất mất thời gian. mình cũng không rành VBA lắm, mong anh em diễn đàn giúp mình, mình xin hậu tạ
 

File đính kèm

Bài này có thể dùng Advanced Filter để giải quyết:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$F$1" Then
    Range("IV1").Value = Range("A1").Value
    Range("IV2").Value = "*" & Target.Value & "*"
    Range("A1:A10000").AdvancedFilter 2, Range("IV1:IV2"), Range("J1")
    Range("IV1:IV2").Clear
  End If
End Sub
 
Upvote 0
bạn xem có đúng ý không nha

Thank bạn trước nha. Bạn làm gần đúng rồi, còn chút nữa là tuyệt vời
ý của mình là nhập vài từ thì nó sẽ hiện ra 1 list danh sách có từ liên quan ( giống như bạn gõ ký tự vào google đó ) . Mình nghĩ chắc vụ này phải làm Combox đó bạn.Ví dụ như tên hàng gồm 7000 tên hàng, thì làm sao nhớ chính xác được tên hàng đó, thành ra mình muốn nó sổ 1 list danh sách để chọn. Bạn giúp mình làm trong Combobox nhé

xem ảnh nek kiểu như thế nàyaaa.JPG
 
Lần chỉnh sửa cuối:
Upvote 0
Bài này có thể dùng Advanced Filter để giải quyết:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$F$1" Then
    Range("IV1").Value = Range("A1").Value
    Range("IV2").Value = "*" & Target.Value & "*"
    Range("A1:A10000").AdvancedFilter 2, Range("IV1:IV2"), Range("J1")
    Range("IV1:IV2").Clear
  End If
End Sub

Cảm ơn anh trước cái đã .Code của anh thì tuyệt vời rồi, anh có thể làm giúp em nhập trong Combobox Active tại ô F1, tại vì em không muốn tên hàng phải xuất hiện ra vùng cột J , nghĩa là em muốn nhập tìm kiếm giống như Combobox của google vậy đó, nhập vài từ nó sẽ sổ ra 1 danh sách có liên quan,. thích cái nào thì Click chọn vào cái đó
 
Upvote 0
Cảm ơn anh trước cái đã .Code của anh thì tuyệt vời rồi, anh có thể làm giúp em nhập trong Combobox Active tại ô F1, tại vì em không muốn tên hàng phải xuất hiện ra vùng cột J , nghĩa là em muốn nhập tìm kiếm giống như Combobox của google vậy đó, nhập vài từ nó sẽ sổ ra 1 danh sách có liên quan,. thích cái nào thì Click chọn vào cái đó

Vậy thì làm đại.
Tôi thiết kế 1 TextBox để bạn nhập liệu các từ khóa và 1 ComboBox để hiện list liên quan
Xem file
(Trong code có dùng đến hàm Filter2DArray, hàm này tôi viết đã lâu, hy vọng còn dùng được)
 

File đính kèm

Upvote 0
Vậy thì làm đại.
Tôi thiết kế 1 TextBox để bạn nhập liệu các từ khóa và 1 ComboBox để hiện list liên quan
Xem file
(Trong code có dùng đến hàm Filter2DArray, hàm này tôi viết đã lâu, hy vọng còn dùng được)

Hình như cũng chưa đúng ý em, Bây giờ chỉ còn cách là em gửi 1 file mẫu người ta đã làm và viết code sẳng rồi, nhưng cũng gần gần đúng ý em.anh xem rồi sữa lại cho phù hợp vơí File của em
Em muốn nhập tên hàng trong Combobox tai ô F1, sau đó Enter tên hàng xuất hiện tại ô F2
 

File đính kèm

Upvote 0
Hình như cũng chưa đúng ý em, Bây giờ chỉ còn cách là em gửi 1 file mẫu người ta đã làm và viết code sẳng rồi, nhưng cũng gần gần đúng ý em.anh xem rồi sữa lại cho phù hợp vơí File của em
Em muốn nhập tên hàng trong Combobox tai ô F1, sau đó Enter tên hàng xuất hiện tại ô F2

Trong file của bạn, không thấy ComboBox nào tại F1 hay F2 cả
 
Lần chỉnh sửa cuối:
Upvote 0
trong File của em Combobox xuất hiện chỉ khi Click chuột vào từ vùng F3 : F1000
Thôi để em sữa lại chổ này cho anh luôn


+Code trong sheet


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
If Target.Address = "$F$1" Then
If Not IsArray(pubArrList) Then
Call ArrCreate
.List = pubArrList
End If
.Visible = False
.Text = ""
If .ListCount < pubUBound Then
.List = pubArrList
End If
.Top = Target.Top
.Left = Target.Left
.Height = Target.Height
.Width = Target.Width
.Visible = True
.Activate
Else
If .Visible = True Then
.Visible = False
End If
End If
End With
End Sub



Private Sub ComboBox1_Change()
With ComboBox1
If .MatchFound Then
ActiveCell.Value = .Value
ActiveCell.Offset(, 1) = .List(, 1)
ActiveCell.Offset(, 2) = .List(, 2)
End If
End With
End Sub



Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
ActiveCell.Offset(1).Select
End If
End Sub


Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Not IsArray(pubArrList) Then Exit Sub
Select Case KeyCode
Case 9, 13, 37 To 40
Case Else
If ComboBox1 > "" Then ComboBox1.DropDown

Dim StrItem As String
Dim n As Long, r As Long
Dim c As Byte, col As Byte
Dim GetRows(), ArrFilter()

col = IIf(CheckBox1, 2, 1)

StrItem = "*" & UCase(ComboBox1) & "*"

For r = 1 To pubUBound
If UCase(pubArrList(r, col)) Like StrItem Then
n = n + 1
ReDim Preserve GetRows(1 To n)
GetRows(n) = r
End If
Next

If n > 0 Then
ReDim ArrFilter(1 To n, 1 To 3)
For c = 1 To 3
For r = 1 To n
ArrFilter(r, c) = pubArrList(GetRows(r), c)
Next
Next
ComboBox1.List = ArrFilter
Else
ComboBox1.List = Array()
End If
End Select
End Sub


Anh xem anh sửa lại sao cho:
- Chổ thay đổi địa chỉ xuất hiện Combobox là F1 ( cái này em làm được rồi )
- Làm sao thay đổi được đỉa chỉ xuất hiện tên hàng sau khi nhập xong ở Combobox ( ví dụ nhập xong tại F1 nhấn Enter tên hàng xuất hiện tại F1 hoac F2 tùy ý , cái này cho người ta thay đổi
 
Upvote 0
Đúng vấn đề mình đang quan tâm }}}}}. Mong sớm có câu trả lời từ các cao thủ để anh em được mở mang tầm mắt. Cảm ơn mọi người
 
Upvote 0

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

Back
Top Bottom