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

Form Menu Sheet bằng Form 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é

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:
       Tạo Form

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

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

Tạo nút bấm

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

Form VBA tọ Menu Sheet    Taooj Form VBA Menu Sheet 

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 MenuRibbonTùy biến Menu Ribbon trong Excel

 

CHO ĐIỂM BÀI VIẾT NÀY

vote data
TOP