Hỗ trợ viết code ComboBox tùy chọn (1 người xem)

Liên hệ QC

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

tuanhuycntt

Thành viên chính thức
Tham gia
5/7/15
Bài viết
65
Được thích
5
Em muốn tạo 1 ComboBox tùy chọn 1 danh sách không có trên bảng tính . Em nghĩ là phải thiết kết từ code VBA và gán Marco vào ComboBox nhưng chưa tìm được giải thuật cụ thể.
Các bác cho em xin ý tưởng với ạ.
 
Các bác cho e hỏi tý. Em đang muốn làm 1 chương trình quản lý cửa hàng tạp hóa nhà e. nhu cầu là: nhập hàng thì hàng cộng dồn vào kho, khi bán thì hàng tự trừ trong kho. in hóa đơn khi bán hàng. quản lý 1 mặt hàng theo nhiều quy cách đóng gói. có ai biết hương dẫn e với a
 
Upvote 0
Mình nghĩ là cái này đúng là cái mình cần. Cám ơn bạn. Nếu nội dung cần tìm mình để ở sheet khác thì mình viết code như thế nào

Chuyển qua dùng vba với lọc nâng cao, cách đơn giản nhất rồi đó. Nếu không biết viết code thì dùng cái trong video này,
 
Upvote 0
Làm như sau:
1> Cho toàn bộ code dưới đây vào 1 module:
Mã:
Public drp As DropDown
Private Sub Auto_Open()
  Set drp = Sheet1.DropDowns("Drop Down 1")
  CreateCboList
End Sub
Private Sub CreateCboList()
  drp.List = Array("*", "a", "b", "c", "d")
End Sub
Sub CboFilter()
  If drp Is Nothing Then Auto_Open
  Dim sFilter As String, rng As Range
  Set rng = Sheet1.Range("A5", Sheet1.Range("E60000").End(xlUp))
  sFilter = drp.List(drp.Value)
  If sFilter = "*" Then
    rng.AutoFilter 3
  Else
    rng.AutoFilter 3, sFilter
  End If
End Sub
2> Ra ngoài bảng tính, click phải chuột vào ComboBox, chọn Assign Macro, chọn macro name "CboFilter" rồi bấm OK
3> Tiếp theo, đóng vào lưu file
4> Mở lại file (đương nhiên phải Enable Macro) và... trải nghiệm


Bác NDU xem giúp em code này bị lỗi ntn với ạ. E thay đổi 1 chút code của bác vì muốn thêm dữ liệu động từ 1 vùng dữ liệu nên AddItem trực tiếp vào ComboBox. Giờ Filter nó cứ báo dòng
Mã:
sFilter = drp.List(drp.Value)

PHP:
Public DD As DropDown              'DD: bien duoc dung chung cho ca Modules'

Private Sub Auto_Open()
    Set DD = Sheet1.DropDowns("Drop Down 1")
    CreateCboList
End Sub

Private Sub CreateCboList()             

        DD.RemoveAllItems
    DD.AddItem ("*")
    For i = 2 To 23
        a = i-1
        tCell = Sheet2.Range("B" & a).Value
        If Len(tCell) > 0 Then
            DD.AddItem (tCell)
        End If
    Next i
End Sub

Sub CboFilter()       

 
        Auto_Open
        Dim sFilter As String, Rng As Range      
 
       Set Rng = Sheet1.Range("A5", Sheet1.Range("E60000").End(xlUp))
        sFilter = DD.List(DD.Value)
        If sFilter = "*" Then
            Rng.AutoFilter 3
        Else
        Rng.AutoFilter 3, sFilter
    End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bác NDU xem giúp em code này bị lỗi ntn với ạ. E thay đổi 1 chút code của bác vì muốn thêm dữ liệu động từ 1 vùng dữ liệu nên AddItem trực tiếp vào ComboBox. Giờ Filter nó cứ báo dòng
Mã:
sFilter = drp.List(drp.Value)

PHP:
Public DD As DropDown              'DD: bien duoc dung chung cho ca Modules'

Private Sub Auto_Open()
    Set DD = Sheet1.DropDowns("Drop Down 1")
    CreateCboList
End Sub

Private Sub CreateCboList()            

        DD.RemoveAllItems
    DD.AddItem ("*")
    For i = 2 To 23
        a = i-1
        tCell = Sheet2.Range("B" & a).Value
        If Len(tCell) > 0 Then
            DD.AddItem (tCell)
        End If
    Next i
End Sub

Sub CboFilter()      

 
        Auto_Open
        Dim sFilter As String, Rng As Range     
 
       Set Rng = Sheet1.Range("A5", Sheet1.Range("E60000").End(xlUp))
        sFilter = DD.List(DD.Value)
        If sFilter = "*" Then
            Rng.AutoFilter 3
        Else
        Rng.AutoFilter 3, sFilter
    End If
End Sub
Bạn sửa sao cũng phải đưa file lên đây! Tôi không rảnh để giả lập dữ liệu rồi test giúp đâu
 
Upvote 0
Web KT

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

Back
Top Bottom