làm sao để nhập vào cell hiện ra theo danh sách chọn trước

Liên hệ QC

noname7979

Thành viên mới
Tham gia
27/12/08
Bài viết
4
Được thích
0
e có một danh mục hàng. đã dùng data validation để nhập theo list chọn sẵn nhưng chậm quá. em muốn khi nhập một hay nhiều chữ cái hoặc từ nào đó thì sẽ sổ ra list e chọn trước có được không các bác. bác nào biết chỉ giúp e nhé. cảm ơn rất nhiều!
 
e có một danh mục hàng. đã dùng data validation để nhập theo list chọn sẵn nhưng chậm quá. em muốn khi nhập một hay nhiều chữ cái hoặc từ nào đó thì sẽ sổ ra list e chọn trước có được không các bác. bác nào biết chỉ giúp e nhé. cảm ơn rất nhiều!
Cái này bạn thử thay thế Validation List thàng 1 combobox và trong combobox đó bạn dùng 1 macro khi mình setfocus nó thì nó tự dropdown như vậy dể tìm hơn, dùng cái này khi mình đánh 1 vài kí tự đầu thì điểm sáng sẽ tự động di chuyển đến danh mục mình cần
Bạn cũng có thể thay thế Macro này bằng tổ hợp phím Alt+phím mũi tên xuống
 
Bạn thử xem cách chuối này giúp được gì cho bạn không

Hướng dẫn xài file đính kèm:
Giả dụ ta cần nhập tên giáo viên từ danh sách (đang có tại sheet1) vô cột 'C' của sheet2
Ta nhập các chữ cái đầu của họ người GV ta muốn nhập vô ô [H1] (có màu nền tô tím nhạt);
VD ta nhập 'Ng' & nhấn {ENTER}
tức thì macro sẽ đưa con trỏ chuột của chúng ta đến hàng đầu chưa có dữ liệu của cột 'C', mà tại đó xuất hiện hộp Validation đễ ta chọn 1 trong những người họ có 2 ký tự đầu là 'Ng'

Đây là nội dung macro, nếu bạn có thời gian tham khảo sau:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [h1]) Is Nothing Then
    Dim Rng As Range, sRng As Range, cRng As Range
    Dim MyAdd As String
    
    Set Rng = Sheets("Sheet1").Range("C1:C30")
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlPart)
    If Not sRng Is Nothing Then
        MyAdd = sRng.Address
        Range([I2], [I2].End(xlDown)).ClearContents
        Do
            If InStr(sRng.Value, Target.Value) = 1 Then
                If cRng Is Nothing Then
                    Set cRng = sRng
                Else
                    Set cRng = Union(cRng, sRng)
                End If
            End If
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
    End If
    If Not cRng Is Nothing Then cRng.Copy Destination:=[I2]
    [c65500].End(xlUp).Offset(1).Select
 End If 
End Sub
 

File đính kèm

Cảm ơn bác nhưng cách này không ổn bác à vì sẽ không nhanh hơn mình chọn trong list.
 
Web KT

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

Back
Top Bottom