Trần Linh Chi
Trần Linh Chi
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 352 lượt xem

Hướng dẫn cách ẩn trang tính theo ý muốn bằng VBA trong Excel

Jun 23 2021

Khi làm việc với một tệp Excel có rất nhiều trang tính, có những trang tính bạn không thường hay sử dụng. Nếu để hết trên thanh tên trang tính sẽ rất rối mắt và gây ra khó khăn trong việc tìm kiếm trang tính. Vì vậy, bạn nên ẩn trang tính không cần sử dụng hoặc không hay sử dụng tới đi, khi nào cần tới mới bỏ ẩn trang tính đó để sử dụng như bình thường. Trong bài viết này, Gitiho sẽ hướng dẫn bạn cách ẩn trang tính cũng như bỏ ẩn trang tính trong Excel theo 2 cách.

Tuyệt đỉnh VBA - Viết Code trong tầm tay

Ẩn và bỏ ấn trang tính trong Excel 

Cách ẩn trang tính trong Excel

  • Nhấp chuột phải vào tên trang tính mà bạn muốn ẩn trang tính, sau đó chọn Hide. Lúc này trang tính bạn đã chọn đã được ẩn đi. 


  • Ngoài ra, bạn có thể ẩn nhiều trang tính cùng một lúc. Cách thực hiện cũng giống như ẩn trang tính đối với từng trang tính riêng lẻ. Tuy nhiên, trước khi chọn chức năng Hide, bạn hãy nhấp chọn vào tên 1 trang tính muốn ẩn, sau đó nhấn giữ phím Shift và tiếp tục nhấp chọn vào tên các trang tính khác muốn ẩn đi.  Sau đó, nhấp chuột phải và chọn Hide.


Cách bỏ ẩn trang tính trong Excel

Để bỏ ẩn trang tính trong Excel, ta làm theo các bước sau:

  • Nhấp chuột phải vào thẻ tên của một trang tính bất kì, chọn Unhide (Bỏ ẩn trang tính)


  • Lúc này, hộp thoại Unhide sẽ xuất hiện. Bạn muốn bỏ ẩn trang tính nào thì nhấp chọn vào trang tính đó và chọn OK. Lưu ý: Mỗi lần thực hiện thao tác chỉ có thể bỏ ẩn trang tính đối với 1 trang tính mà thôi, không thể bỏ cùng lúc nhiều trang tính. Và để dễ dàng biết đâu là trang tính mình muốn bỏ ẩn trang tính,  bạn nên đặt tên cho trang tính trước khi ẩn trang tính


Xem cách đặt tên trang tính ở đây: Cách di chuyển nhanh giữa các Sheet và đặt tên Sheet Excel đúng chuẩn

Tuy nhiên, nếu thực hiện theo cách truyền thống này thì chỉ có thể bỏ ẩn trang tính đối với 1 trang tính mà thôi. Để ẩn trang tính hoặc bỏ ẩn nhiều trang tính cùng một lúc, bạn hoàn toàn có thể tạo 1 menu như một bảng điều khiển ẩn trang tính hoặc bỏ ẩn trang tính trong tệp Excel nhanh chóng và tiện lợi hơn rất nhiều bằng VBA trong Excel. Cách tạo menu này cũng rất dễ đó! Các bước thực hiện như sau:

Ẩn và bỏ ẩn trang tính bằng VBA Excel

Bước 1: Chuẩn bị 

  • Tại tệp Excel bạn muốn tạo menu điều khiển ẩn hoặc bỏ ẩn trang tính, bạn tạo 1 trang tính (Sheet) và đặt tên là Menu. Trong trang tính Menu, bạn chuẩn bị các dữ liệu như ảnh sau:


  • Các trang tính còn lại trong tệp, bạn có thể đặt tên hoặc tô màu cho thẻ tên trang tính tùy theo ý thích. 
  • Vẽ nút lệnh:  Vào thẻ Insert > Shapes > Vẽ 2 hình khối (có thể sử dụng hình tùy ý mong muốn, ở đây Gitiho sẽ dùng 2 hình chữ nhật) để làm 2 nút lệnh ẩn hoặc bỏ ẩn trang tính và danh sách tên trang tính. Vẽ vào vị trí bất kì trong trang tính. Nên vẽ ngay bên cạnh bảng vừa tạo ở trên để tiện quan sát và điều khiển các thao tác ẩn và bỏ ẩn trang tính. Sau đó định dạng cho nút lệnh như nhập nội dung, trang trí nút lệnh theo mong muốn.


Chú ý: Bạn có thể tải mẫu của trang tính Menu này ở cuối bài nhé! Sau khi tải mẫu về, bạn có thể tạo 1 trang tính mới trong tệp của bạn, sau đó sao chép bảng mẫu và dán vào trang tính đó. Hoặc bạn có thể lấy dữ liệu từ bảng tính mẫu vào tệp Excel của bạn: Hướng dẫn cách lấy dữ liệu từ file Excel này sang file Excel khác

  • Lưu tệp Excel này dưới định dạng Excel Macro - Enabled Template để tạo tệp lưu trữ macro cho VBA trong Excel.

Bước 2: Viết Macro

Để có thể điều kiển thao tác ẩn và bỏ ẩn trang tính trong Excel bằng VBA, chúng ta cần phải viết được macro lấy danh sách tên trang tính

  • Đầu tiên, tạo 1 module trong cửa số VBA để bắt đầu viết macro

Xem cách tạo module và chèn code vào module tại đây: Làm thế nào chèn code vào module trong VBA Excel

  • Trong Module vừa tạo, bạn viết đoạn code dưới đây. Đoạn code này dùng để liệt kê tất cả các trang tính có trong tệp vào bảng danh sách chúng ta chuẩn bị ở bước 1. 
Sub SheetList()
Dim ws As Worksheet
Dim lr As Long
    lr = 2
  For Each ws In ThisWorkbook.Worksheets
    Sheets("MENU").Range("A" & lr).Value = ws.Name
      lr = lr + 1
  Next ws
End Sub
  • Gán Macro vừa viết vào nút lệnh danh sách tên bằng Assign Macro


  • Khi nhấp chuột vào nút lệnh Danh sách tên, Macro sẽ tự động liệt kê toàn bộ tên trang tính vào cột A, bắt đầu từ ô A2


Bước 3: Viết công thức ẩn và bỏ ẩn trang tính

Trước khi viết công thức ẩn và bỏ ẩn trang tính, chúng ta cần hiểu logic:

  • Nếu trang tính nào đang được ẩn thì sẽ không hiện, nếu không ẩn trang tính thì trang tính sẽ hiện
  • Vì vậy, chúng ta chỉ cần điều khiển cột ẩn trang tính (cột Ẩn - cột B) thì cột bỏ ẩn trang tính (cột Hiện - cột C) sẽ tự động dựa theo công thức để lấy kết quả
  • Có công thức ở cột C như sau:


Ở đây, "x" là ký tự đại diện cho việc bạn sẽ đánh dấu ký hiệu cho việc trang nào sẽ được chọn để ẩn hoặc bỏ ẩn trang tính. Công thức như sau: 

=IF(A3=””, “”, IF(B3=”x”, “”, “x”))

Trong đó:

  • IF(A3=””, “”,  : Nếu giá trị trong ô A3 là rỗng (không có tên trang tính) thì trả về giá trị rỗng
  • IF(B3=”x”, “”, “x”): Nếu giá trị trong ô B3 (được đánh dấu x cho việc ẩn trang tính) thì giá trị trong cột Hiện sẽ là rỗng. Ngược lại nếu không đánh dấu x vào ô Ẩn thì sẽ trả về giá trị x tại ô Hiện

Công thức này sẽ nhập bắt đầu từ trang tính ngay dưới trang tính Menu. Ở trang tính Menu, ta nhập giá trị "x" luôn để thể hiện trang tính Menu sẽ luôn hiện

Bước 4: Viết code để ẩn và bỏ ẩn trang tính

Tạo 1 đoạn code có tên AnHien_Sheet như sau:

Sub AnHien_Sheet()
Dim lr As Long
    lr = Sheets("MENU").Cells(Rows.Count, 1).End(xlUp).Row

Dim sodong As Long
'An/hien sheet
For sodong = 2 To lr
    'Mo an tat ca cac sheet
    Worksheets(Sheets("MENU").Range("A" & sodong).Value).Visible = xlSheetVisible
    'An sheet duoc danh dau
    If Sheets("MENU").Range("B" & sodong).Value = "x" Then
        Worksheets(Sheets("MENU").Range("A" & sodong).Value).Visible = xlSheetHidden
    End If
Next sodong

Sheets("MENU").Activate
End Sub

Nếu bạn chưa hiểu về cấu trúc vòng lặp For được áp dụng trong đoạn code trên, bạn có thể tham khảo tại bài viết này: Hướng dẫn sử dụng vòng lặp For.. Next trong VBA

Sau khi viết xong đoạn code thì gán đoạn code vào nút lệnh Ẩn và bỏ ấn trang tính 

Tổng kết

Trong bài viết trên, Gitiho đã hướng dẫn bạn cách ẩn và bỏ ẩn trang tính trong Excel với 2 cách là ẩn/bỏ ẩn trang tính theo cách truyền thống và tự động ẩn/bỏ ấn trang tính bằng VBA Excel.

Qua bài viết, bạn có thể thấy, việc ứng dụng VBA vào Excel giúp cho quá trình làm việc với bảng tính Excel trở nên đơn giản và nhanh chóng hơn rất là nhiều, kể cả những tệp Excel với rất nhiều bảng tính và nhiều dữ liệu. Để tìm hiểu công cụ cực kì hữu ích này, hãy tham gia khóa học Tuyệt đỉnh VBA - Viết Code trong tầm tay để làm quen  với VBA từ A tới Z và ứng dụng thành thạo VBA vào Excel nhé!

Tài liệu kèm theo bài viết

Cùng tham gia cộng đồng hỏi đáp về chủ đề Excel Cơ Bản

Thảo luận 0 câu trả lời
Lượt xem 352 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội