Tạo một Frame với Multi tab trong lập trình VBA Excel


Chào các bạn, bài viết này mình sẽ hướng dẫn chi tiết cách làm một multitab page như hình trên.

  • Yêu cầu: biết sử dụng excel và lập trình VBA 

Bước 1: Tắt lưới và thay đổi màu nền trên Excel

  • Tắt lưới trên Excel: trên tab View, bỏ check Gridlines


  • Thay đổi màu nền trên Excel: chọn tất cả các ô, và nhấp vào Fill Color rồi chọn màu nền tuỳ thích.


  • Đây là diễn tiến bước 1


Bước 2: Tạo và đặt tên cho 6 Tab

Hai tab Report: tab màu xanh dương có nhãn là "Báo Cáo" và có tên là ReportOn, tab màu trắng dương có nhãn là "Báo Cáo" và có tên là ReportOff.

Hai tab ReSum: tab màu xanh lá có nhãn là "Tổng Kết" và có tên là ReSumOn, tab màu trắng dương có nhãn là "Tổng Kết" và có tên là ReSumOff.

Hai tab About: tab màu vàng cam có nhãn là "About Us" và có tên là AboutOn, tab màu trắng dương có nhãn là "About Us" và có tên là AboutOff.



Các bạn nhấp vào Insert trên thanh Ribbon, chọn Insert Shape, và chèn 6 shape như hình trên.

Để thay đổi kiểu shape, các bạn nhấp phải vào shape, chọn Style.

Thay đổi màu nền của shape thì các bạn chọn Fill.

Thay đổi thuộc tính đường viền thì các bạn chọn Outline.

Để thay đổi hoặc thêm một nhãn cho các tab, các bạn chọn Edit Text, và nhập nhãn vào mong muốn.

Để thay đổi kích thước chính xác cho shape các bạn chọn Size and Properties...



Để thay đổi độ đậm nhạt, độ bóng mờ và nhiều hiệu ứng cho shape, thì các bạn chọn Format Shape..


Để thay đổi tên, ẩn hiện các shape các chọn Selection Pane tên tab Page Layout. Khung Selection xuất hiện bên trái của Excel, chứa tất cả các shape có trên sheet. Các bạn nhấp vào từng shape và thay đổi tên cho đúng.   


Bước 3: Xếp chồng từng cặp Tab

Các bạn chọn từng cặp tab ReportOn-ReportOff, ReSumOn-ReSumOff, AboutOn-AboutOff. Ở mỗi cặp được chọn, các bạn nhấp vào Align và chọn Align Top rồi Align Left nhé.


Sau khi xếp chồng các cặp tab, các bạn chọn tất cả 6 tab và chọn tiếp Align Top để canh cho các cặp tab nằm ngang nhau.


Tiếp theo dịch chuyển từng cặp tab lại gần nhau cho đẹp mắt nhé.


Bước 4: Tạo 3 khung dữ liệu cho 3 cặp Tab

Các bạn tạo ra 3 shape làm 3 khung dữ liệu, trong đó shape màu vàng cam đặt tên là FAbout, shape màu xanh lá đặt tên là FReSum, shape màu xanh dương đặt tên là FReport như hình.


Sau đó các bạn chọn hết 3 khung dữ liệu và xếp chồng chúng lại với nhau bằng cách dùng Align Top & Align Left nhé.


Bước 5: Viết Code tạo sự kiện khi nhấn vào ReportOff, ReSumOff, AboutOff.

Các bạn vào tab Developer, rồi nhấp vào Visual Basic để chuyển qua khung soạn code VBA.


Code sự kiện cho tab Report
Sub ReportOn()

End Sub

Sub ReportOff()
    With Sheets(1)
        'Su khien cho tab Report
        .Shapes("ReportOn").Visible = msoTrue
        .Shapes("ReportOff").Visible = msoFalse

        'Su khien cho tab ReSum
        .Shapes("ReSumOn").Visible = msoFalse
        .Shapes("ReSumOff").Visible = msoTrue

        'Su khien cho tab About
        .Shapes("AboutOn").Visible = msoFalse
        .Shapes("AboutOff").Visible = msoTrue

        'Su khien cho 3 khung du lieu
        .Shapes("FReport").Visible = msoTrue
        .Shapes("FReSum").Visible = msoFalse
        .Shapes("FAbout").Visible = msoFalse
    End With
End Sub

Code sự kiện cho tab ReSum
Sub ReSumOn()

End Sub

Sub ReSumOff()
    With Sheets(1)
        'Su khien cho tab Report
        .Shapes("ReportOn").Visible = msoFalse
        .Shapes("ReportOff").Visible = msoTrue

        'Su khien cho tab ReSum
        .Shapes("ReSumOn").Visible = msoTrue
        .Shapes("ReSumOff").Visible = msoFalse

        'Su khien cho tab About
        .Shapes("AboutOn").Visible = msoFalse
        .Shapes("AboutOff").Visible = msoTrue

        'Su khien cho 3 khung du lieu
        .Shapes("FReport").Visible = msoFalse
        .Shapes("FReSum").Visible = msoTrue
        .Shapes("FAbout").Visible = msoFalse
    End With
End Sub

Code sự kiện cho tab About
Sub AboutOn()

End Sub

Sub AboutOff()
    With Sheets(1)
        'Su khien cho tab Report
        .Shapes("ReportOn").Visible = msoFalse
        .Shapes("ReportOff").Visible = msoTrue

        'Su khien cho tab ReSum
        .Shapes("ReSumOn").Visible = msoFalse
        .Shapes("ReSumOff").Visible = msoTrue
       
        'Su khien cho tab About
        .Shapes("AboutOn").Visible = msoTrue
        .Shapes("AboutOff").Visible = msoFalse

        'Su khien cho 3 khung du lieu
        .Shapes("FReport").Visible = msoFalse
        .Shapes("FReSum").Visible = msoFalse
        .Shapes("FAbout").Visible = msoTrue
    End With
End Sub

Sau khi đã tạo code sự kiện cho các Tab xong. Các bạn bắt đầu công việc gán sự kiện cho mỗi Tab. Để gán sự kiện cho mỗi Tab, các bạn nhấp phải vào Tab và chọn Assign Macro.




Các bạn nhớ gán Macro sự kiện cho đúng các tab:

  • Tab ReportOn - Sub ReportOn()
  • Tab ReportOff - Sub ReportOff()
  • Tab ReSumOn - Sub ReSumOn()
  • Tab ReSumOff - Sub ReSumOff()
  • Tab AboutOn - Sub AboutOn()
  • Tab AboutOff - Sub AboutOff()


Bước 6: Bước này là bước quan trọng nhất trong các bước. Đó là các bạn phải lưu lại dưới dạng "Excel Macro-Enabled Workbook".  


Post a Comment

Previous Post Next Post

Comments