Tạo Menu Sheet bằng Form VBA Quản Lý Và Tự Động Cập Nhật Sheet Mới Trong Excel
Trong quá trình làm việc với File Excel, có những File rất nhiều Sheet, làm bạn mất thời gian mỗi lúc tìm kiếm, bạn loay hoay tìm cách làm sao có một danh sách hay một Sheet riêng để tạo Menu co dễ quản lý, nhưng khi phát sinh phát sinh sheet mới thì sao? lại mất công tạo thêm nút bấm hoặc tạo thêm liên kết vào Menu
Để 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é
1 Mở 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ảo In Phiếu Lương Hàng Loạt hoặc VBA Căn Bản Bài 01
2 Tạo UserForm 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
3 Viết code 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
4 Tạ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
5 Tạ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
6 Sử 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ới hoặ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ôi sẽ hướng dẫn các bạn tùy biến MenuRibbon
CHO ĐIỂM BÀI VIẾT NÀY