Sự kiện text_change lấy dữ liệu vào listbox (1 người xem)

Liên hệ QC

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

khongnhienttt

Thành viên hoạt động
Tham gia
15/7/15
Bài viết
137
Được thích
33
- mình có bài tập sau: mục đích của mình là điền nhiều mã số lên tiếp vào textbox, mỗi mã cách nhau bằng dấu phẩy, khi mình bấm nút hiện danh sách thì nó ra dữ liệu trong list, yêu cầu của mình là không cần bấm nút hiện danh sách, mà khi gõ các mã vào trong textbox thì listbox tự hiện ra luôn, mong các bạn và các anh chị giúp đỡ
- cái thứ 2 là cái nâng cao thêm: nếu cái danh sách trong listbox nhiều quá thì cho thêm 1 cột và nhiều nữa thì thêm 1 cột ( giống như nếu dữ liệu ít thì listbox là 1 cột dữ liệu, nếu nhiều thì listbox là 2,3 ... cột dữ liệu
 

File đính kèm

trong đoạn (Declarations) thêm khai biến
Dim n As Integer
thêm sự kiện sau vào form code
Mã:
Private Sub txt1_Change()
h = 10
If ListBox1.ColumnCount < 1 + Int(n / h) Then _
ListBox1.ColumnCount = ListBox1.ColumnCount + 1
If Right(txt1, 1) = "," Then
    Item = Split(txt1, ",")(UBound(Split(txt1, ",")) - 1)
    If Int(n / h) = 0 Then ListBox1.AddItem Item _
    Else: ListBox1.List(n Mod h, Int(n / h)) = Item
    n = n + 1
End If
End Sub
lưu ý : đoạn code trên được lập cho lisbox 10 dòng, bạn có thể thay đổi tham số h bằng con số mong muốn .
 
Lần chỉnh sửa cuối:
Upvote 0
ồ hên quá không phải admin đỡ phải làm .
hihi, bạn nào biết giúp mình với.

trong đoạn (General) thêm khai biến
Dim n As Integer
thêm sự kiện sau vào form code
Mã:
Private Sub txt1_Change()
h = 10
If ListBox1.ColumnCount < 1 + Int(n / h) Then _
ListBox1.ColumnCount = ListBox1.ColumnCount + 1
If Right(txt1, 1) = "," Then
    Item = Split(txt1, ",")(UBound(Split(txt1, ",")) - 1)
    If Int(n / h) = 0 Then ListBox1.AddItem Item _
    Else: ListBox1.List(n Mod 10, Int(n / h)) = Item
    n = n + 1
End If
End Sub
lưu ý : đoạn code trên được lập cho lisbox 10 dòng, bạn có thể thay đổi tham số h bằng con số mong muốn .

cám ơn bạn, code bạn chạy rất tốt, nhưng ý mình muốn lấy cái tên ở cột B, ko phải lấy mã ở cột A, bạn giúp mình nhé
 
Upvote 0
hihi, bạn nào biết giúp mình với.



cám ơn bạn, code bạn chạy rất tốt, nhưng ý mình muốn lấy cái tên ở cột B, ko phải lấy mã ở cột A, bạn giúp mình nhé
Mã:
Private Sub txt1_Change()
On Error Resume Next
h = 10
If ListBox1.ColumnCount = Int(n / h) Then _
ListBox1.ColumnCount = Int(n / h) + 1
If Right(txt1, 1) = "," Then
    code = Split(txt1, ",")(UBound(Split(txt1, ",")) - 1)
    Set Item = Sheets("Sheet1").UsedRange.Find(code,,,xlWhole)(1, 2)
    If Item Is Nothing Then Item = "N/A"
    If Int(n / h) = 0 Then ListBox1.AddItem Item _
    Else: ListBox1.List(n Mod h, Int(n / h)) = Item
    n = n + 1
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
Private Sub txt1_Change()
On Error Resume Next
h = 10
If ListBox1.ColumnCount = Int(n / h) Then _
ListBox1.ColumnCount = Int(n / h) + 1
If Right(txt1, 1) = "," Then
    code = Split(txt1, ",")(UBound(Split(txt1, ",")) - 1)
    Set Item = Sheets("Sheet1").UsedRange.Find(code,,,xlWhole)(1, 2)
    If Item Is Nothing Then Item = "N/A"
    If Int(n / h) = 0 Then ListBox1.AddItem Item _
    Else: ListBox1.List(n Mod 10, Int(n / h)) = Item
    n = n + 1
End If
End Sub
cám ơn bạn rất nhiều, bài làm đúng ý mình rồi.
 
Upvote 0
Web KT

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

Back
Top Bottom