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
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
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