Nhờ giúp tìm nhanh trong list down

Liên hệ QC

ngmcuongbl

Thành viên chính thức
Tham gia
19/12/08
Bài viết
73
Được thích
2
Chào anh/chị
Em đã tạo drop down list để chọn được dữ liệu theo danh sách, nhưng giờ thì danh sách nhiều quá, cái list sổ xuống dài khó chọn . Nhờ anh/chị hướng dẫn cách để tìm nhanh. Xin cám ơn
 

File đính kèm

  • tim.xls
    23 KB · Đọc: 7
Em làm list down tìm kiếm được theo bài của a.e trên diễn đàn này, nhưng khi mở ra thì màn hình bị thu nhỏ (như hình), nhờ a.c khắc phục giúp, xin cám ơn!
Private priArray
Private priIsFocus As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 And Target.Row > 6 And Target.Column = 2 Then
Dim e As Long
Dim sh As Worksheet
Set sh = Sheets("DMHANG")
If Not IsArray(priArray) Then
e = sh.Range("A" & Rows.Count).End(xlUp).Row
priArray = sh.Range("A6:C" & e).Value2
End If
Call HienComboBox
Else
Call AnComboBox
End If
End Sub

Private Sub ComboBox1_Change()
If priIsFocus Then Exit Sub
If ComboBox1.MatchFound Then
ActiveCell.Value = ComboBox1.Text
ActiveCell.Offset(, 2).Value = ComboBox1.Column(2)
Else
ActiveCell.Value = ""
ActiveCell.Offset(, 2).Value = ""
End If
End Sub

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
On Error Resume Next
Select Case KeyCode
Case 16, 17, 37 To 40
Case 9
ActiveCell.Offset(, 1).Activate
Case 13
ActiveCell.Offset(1).Activate
Case Else
If IsArray(priArray) Then
Dim strValue As String
strValue = LCase(ComboBox1.Text)
ComboBox1.ListRows = 20
If Trim(strValue) > "" Then
Dim ArrFilter, GetRow()
Dim c As Long, i As Long, n As Long, r As Long
For r = 1 To UBound(priArray, 1)
If LCase(priArray(r, 1)) Like "*" & strValue & "*" Then
n = n + 1
ReDim Preserve GetRow(1 To n)
GetRow(n) = r
End If
Next
If n Then
Dim u As Byte
u = UBound(priArray, 2)
ReDim ArrFilter(1 To n, 1 To u)
For r = 1 To n
For c = 1 To u
ArrFilter(r, c) = priArray(GetRow(r), c)
Next
Next
ComboBox1.List = ArrFilter
Else
ComboBox1.Clear
ComboBox1.ListRows = 0
End If
ComboBox1.DropDown
Else
If ComboBox1.ListCount <> UBound(priArray) Then
ComboBox1.List = priArray
ComboBox1.DropDown
End If
End If
End If
End Select
End Sub

Private Sub HienComboBox()
priIsFocus = True
With ComboBox1
.Visible = False
.Visible = True
.Left = ActiveCell.Left
.Top = ActiveCell.Top
.Width = ActiveCell.Width
.ListWidth = ActiveCell.Resize(, 3).Width + 12
.ColumnWidths = .Width - 4 & "," & ActiveCell.Offset(, 1).Width
.Height = ActiveCell.Height
.List = priArray
.Text = ActiveCell.Value
.Activate
.SelStart = 0
.SelLength = Len(.Text)
End With
priIsFocus = False
End Sub

Private Sub AnComboBox()
With ComboBox1
If .Visible Then
.Visible = False
End If
End With
End Sub
 

File đính kèm

  • loi.jpg
    loi.jpg
    216.6 KB · Đọc: 10
Web KT
Back
Top Bottom