Tạo list trong Excel VBA

Để khắc phục những điều phiền toái bạn đang gặp, xin hướng dẫn các bạn một cách rất đơn giản mà rất hiệu quả, tự động cập nhật khi Sheet mới được tạo hoặc xóa sheet, chúng ta sẽ tạo ra một Form VBA đơn giản như sau nhé
Đầu tiên giả sử bạn có một Workbook khoảng 30 sheet hoặc nhiều hơn hoặc ít hơn, không quan tâm nhé

1Mở cửa sổ soạn thảo Code[VBE]

Mở cửa sổ VBE bằng cách ALT+F11 hoặc Deverloper->VisulBasic hoặc ViewCode, bạn cóthể tham khảoInPhiếu Lương Hàng Loạthoặc VBA Căn Bản Bài 01

2TạoUserForm mới có tên quản lý sheet

Tại cửa sổ VBA Project, nhấp chuột phải và chọn Insert UserForm, sau đó các bạn làm tiếp theo như sau:

Sau khi vẽ xong, tiến hành đặt tên tại mục "Name" và mục "Caption" nếu có trên cửa sổ Properties như sau.
tại mục Name chính là tên của Sub, còn Caption chính là tên hiển thị của Form


Lable: Name=MENU SHEET
Textbox: Name=txtTenHH
Listbox: Name=lstSheets
Button: Name=SHOW ALL SHEET, Caption=cmdShowSheet
UserForm: Name=FrmShowSheet, Caption=SHEET IN WORKBOOK


3Viếtcode cho TextBox, ListBox, CommandButton

Private Sub txtTenHH_Change[]
If txtTenHH "" Then
cmdShowSheet_Click
For k = ListBox1.ListCount - 1 To 0 Step -1
If Not UCase[ListBox1.List[k]] Like "*" & UCase[txtTenHH] & "*" Then
ListBox1.RemoveItem [k]
End If
Next
ElseIf txtTenHH = "" Then
cmdShowSheet_Click
End If
End Sub

'---Code cho ListBox[lstSheets]
Private Sub lstSheets_Click[]
Sheets[frmShowSheet.lstSheets.Value].Select
frmShowSheet.txtTenHH.SetFocus
End Sub

'---Code cho CommandButton[cmdShowSheet]
Private Sub cmdShowSheet_Click[]
Dim Sh As Worksheet
For Each Sh In Sheets
frmShowSheet.lstSheets.AddItem Sh.Name
Next
Dim i As Long, j As Long
With lstSheets
For i = 0 To .ListCount - 1
For j = .ListCount - 1 To [i + 1] Step -1
If .List[j] = .List[i] Then
.RemoveItem j
frmShowSheet.txtTenHH.SetFocus
End If
Next j
Next i
End With
End Sub

4Tạo một Moule mới vàtạo một Sub mới có tên MenuSheet

Sub MenuSheet[]
Call frmShowSheet.Show[0]
End Sub

5Tạo nút bấm để hiển thị Form

Ra sheet bất kỳ, vẽ một nút Shapes, nhấp chuột phải vào Shapes, chọn AsignMacro, chọn Macro cótên MenuSheet, sau đó nhấn OK

6Sử dụng

Nhấp chuột vào nút SHOW ALL SHEET để hiển thị tất cả các sheet, bây giờ bạn thử tạo một sheet mớihoặc xóa sheet nào đó, và bấm lại nút SHOW ALL SHEET để xem nó cập nhật không, bạn chọn sheet bất kỳ trong ô ListBox, hoặc gõ từ khóa bất kỳ lên ô TextBox để cảm nhận

Các bạn quan tâm môn Lập Trình VBA có thể tham khảo thêm tại bài này "Lập Trình VBA Từ Căn Bản Đến Nâng Cao", bài tiếp theo tôisẽ hướng dẫn các bạn tùy biến MenuRibbon

Video liên quan

Chủ Đề