1 sheet mẫu có nhiều dữ liệu ẩn
Khi làm việc với những file Excel có nhiều Sheet, chắc hẳn bạn sẽ rất vất vả với việc ẩn / hiện các Sheet. Làm thế nào để ẩn được nhiều Sheet cùng lúc? Làm thế nào để bỏ ẩn (hiện) nhiều Sheet cùng lúc? Hay nói cách khác bạn có muốn 1 bảng điều khiển sẽ giúp bạn tự động ẩn hoặc hiện các Sheet trong file Excel theo ý muốn? Chỉ với 1 chút kiến thức về Excel và VBA, bạn hoàn toàn có thể tự làm được bảng điều khiển này. Hãy cùng Học Excel Online tìm hiểu cách tạo MENU ẩn hiện Sheet theo ý muốn trong Excel bằng VBA nhé. Mục tiêu của bài viết này là bạn có thể tạo được 1 Sheet (MENU) mà tại đó có thể điều khiển ẩn, hiện các Sheet còn lại trong file theo ý muốn như hình dưới đây: Các bước thực hiện như sau: Show
Bước 1: Chuẩn bị file ExcelBạn có thể lấy bất kỳ file Excel nào cũng được, trong đó bạn sẽ dành riêng ra 1 Sheet đặt tên là MENU. Hoặc bạn có thể tải về và sử dụng file mẫu theo bài viết này tại địa chỉ: http://bit.ly/2CvJh2y (Nếu bạn sử dụng file này thì có thể bỏ qua bước chuẩn bị) Tại Sheet MENU, bạn tạo 3 cột gồm: Danh sách tên Sheet, Ẩn, Hiện (Có thể trình bày, định dạng 1 chút cho bảng đó đẹp mắt) Trong file bạn có thể đặt tên các Sheet còn lại, tô màu Sheet… tùy ý. Sử dụng chức năng Insert > Shapes > Vẽ ra 2 hình chữ nhật, tượng trưng cho 2 nút lệnh:
Bước 2: Viết Macro lấy danh sách tên SheetĐầu tiên bạn tạo 1 Module trong cửa sổ VBA để có thể bắt đầu với việc viết Macro trong VBA. Nếu bạn chưa biết cách tạo Module thì có thể xem thêm tại bài viết: Bắt đầu với Excel Macros và lập trình VBA Trong Module1 vừa tạo, bạn viết 1 Sub như sau: (Để copy đoạn code trên, bạn bấm vào mục View raw trong bảng code, trong cửa sổ code bạn có thể copy lại dòng code để dán vào trong Module) Câu lệnh trên có ý nghĩa: Liệt kê tất cả tên các Sheet có trong File vào bảng Danh sách tên Sheet trong MENU, bắt đầu từ ô A2
Gán Macro này vào nút lệnh Danh sách tên bằng thủ tục Assign Macro: Bây giờ chúng ta chỉ cần bấm 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 Sheet vào cột A, bắt đầu từ ô A2 như sau: Ở ví dụ này có 10 Sheet, trong đó Sheet1 đã được đổi tên thành MENU.Bước 3: Viết công thức về Logic Ẩn/HiệnTrong 2 cột B và C, chúng ta có logic là: Nếu 1 Sheet đang Ẩn thì sẽ không hiện => Ngược lại, nếu 1 Sheet không ẩn thì phải Hiện. Do đó chúng ta chỉ cần tác động vào cột Ẩn (cột B), còn lại cột C sẽ tự động dùng công thức để lấy kết quả. Ta có công thức tại cột C là: Ký tự x đại diện cho việc bạn sẽ đánh dấu ký hiệu cho việc Sheet nào được chọn để ẩn/ hiện. Công thức =IF(A3=””, “”, IF(B3=”x”, “”, “x”)) Trong đó:
Riêng Sheet MENU chúng ta không đặt công thức mà đặt thẳng giá trị x vào để thể hiện sheet đó luôn Hiện Bước 4: Viết code ẩn/hiện SheetTiếp theo bạn tạo 1 Sub có tên AnHien_Sheet như sau: Nội dung của đoạn code trên là (những dòng lệnh chính):
Các bạn có thể tìm hiểu thêm về cấu trúc IF, vòng lặp For trong VBA tại bài viết: Hướng dẫn cách viết cấu trúc IF THEN ELSE trong VBA Excel Hướng dẫn sử dụng vòng lặp For.. Next trong VBA Sau khi viết xong Sub trên, chúng ta gán Sub vào trong nút lệnh Ẩn/hiện Sheet. Kết luậnNhư vậy chúng ta đã hoàn thành được MENU điều khiển việc ẩn, hiện Sheet rồi. Bạn chỉ việc thực hiện thao tác chọn Sheet muốn Ẩn, sau đó bấm nút Ẩn/hiện Sheet và xem kết quả nhé. Muốn hiện Sheet đang ẩn, bạn chỉ cần xóa ký tự x trong cột Ẩn với Sheet đó rồi bấm nút Ẩn/hiện Sheet một lần nữa. Ngoài ra bạn có thể áp dụng LẬP TRÌNH SỰ KIỆN vào trong sheet MENU để mỗi khi đánh dấu x hoặc bỏ dấu x vào ô Ẩn của Sheet bất kỳ, ngay lập tức Sheet đó sẽ ẩn/hiện mà không cần phải bấm nút Ẩn/hiện Sheet. Các bạn tham khảo cách lập trình sự kiện cho Sheet tại bài viết sau đây và thực hành theo nhé: Tìm hiểu về ý nghĩa và cách dùng các sự kiện trong VBA Excel |