riêng một bảng tính cụ thể
Bạn đã từng tạo ra thanh cơng cụ riêng cho mình? Bạn có thấy rằng, thanh cơng cụ này luôn luôn được nạp vào Excel, và ln hiển thị, với bất kỳ bảng tính nào, với bất kỳ người sử dụng nào? Có bao giờ, bạn muốn rằng, thanh cơng cụ tự tạo này chỉ được hiển thị với một bảng tính cụ thể nào đó mà thơi khơng?
Ví dụ, bạn tự tạo ra một thanh cơng cụ có chứa những nút dùng để hỗ trợ việc nhập công thức và xử lý bảng (những dấu =, +, -, *, /, những nút dùng để xóa hàng, xóa cột, v.v...), tạm gọi là thanh cơng cụ A, phục vụ riêng cho bảng tính B. Và bạn muốn, làm thế nào để chỉ khi bạn mở bảng tính B, thì mới thấy thanh cơng cụ A của bạn, cịn mở bảng tính khác, thì chỉ thấy những thanh công cụ mặc định của Excel? Thậm chí trong cùng một cửa sổ Excel, nhưng khi bạn kích hoạt bảng tính B, thì mới thấy thanh cơng cụ A, còn khi nhấn Ctrl+Tab để chuyển sang bảng tính khác, thì thanh cơng cụ A này sẽ biến mất?
Thiết nghĩ, chắc hẳn đã có lúc bạn muốn điều tơi vừa nói. Vì nó giúp cho thanh công cụ của Excel luôn gọn gàng, ngăn nắp (luôn là thanh công cụ mặc định của Excel), nếu khơng phải là bạn, mà là người khác, thì khơng có gì bỡ ngỡ với thanh cơng cụ lạ hoắc; hoặc là, chỉ khi nào mở bảng tính B ra, thì mới cần đến thanh cơng cụ A, cịn bình thường thì chẳng cần...
Việc này, khơng có gì khó. Bạn chỉ cần chèn một đoạn code đơn giản vào trong "Private module" của bảng tính.
Trước hết, bạn hãy tạo cho riêng mình một thanh cơng cụ. Đặt tên cho nó là "MyCustomToolbar" chẳng hạn.
Tiếp theo, bạn nhấn Alt+F11 để mở cửa sổ Microsoft Visual Basic, nhấn đúp vào This workbook trong khung Project. Bạn cũng có thể làm nhanh việc này bằng cách nhấn nút phải chuột vào cái biểu tượng Excel bé tí nằm ngay bên trái menu
File, rồi chọn View Code, cửa sổ VBA cũng sẽ mở ra với This workbook được
Nhấn phải chuột vào biểu tượng Excel nhỏ bên trái menu File rồi chọn View Code
Rồi, nhập vào hai đoạn code sau đây:
Option Explicit
---------------------------------------------------------------- ----
Private Sub Workbook_Activate() On Error Resume Next
With Application.CommandBars("MyCustomToolbar") .Enabled = True .Visible = True End With On Error GoTo 0 End Sub ---------------------------------------------------------------- ----
Private Sub Workbook_Deactivate() On Error Resume Next
Application.CommandBars("MyCustomToolbar").Enabled = Fal se
On Error GoTo 0 End Sub
Bạn có thể thay thế "MyCustomToolbar" bằng cái tên mà bạn đã đặt cho thanh cơng cụ tự tạo của bạn. Sau đó bạn nhấn Alt+Q để trở về Excel.
Để thử, bạn hãy mở thêm một bảng tính nữa, Book2.xls chẳng hạn. Bạn sẽ thấy, khi nào bạn chọn bảng tính mà có đoạn code ở trên, thì bạn mới thấy
"MyCustomToolbar", cịn nếu chọn Book2 (chuyển đổi qua lại giữa các bảng tính bằng Ctrl+Tab), "MyCustomToolbar" biến mất! Chọn lại bảng tính ban đầu, "MyCustomToolbar" xuất hiện lại. Vậy là thành công rồi!
Được voi đòi tiên. Bây giờ, giả sử bạn muốn rằng, trong cùng một bảng tính, nhưng chỉ có Sheet1 thì mới thấy "MyCustomToolbar", cịn Sheet khác thì khơng? Được thơi. Bạn có thể viết thêm một "Level" nữa cho đoạn code trên. Hãy bảo đảm là bạn đang chọn bảng tính có chứa code (tốt nhất là bạn đóng cái Book2 đi). Quay trở lại cửa sổ VBA, bạn hãy nhấn phải chuột vào Sheet nào mà bạn muốn thấy "MyCustomToolbar", rồi chọn View Code (hoặc nhấn đúp vào tên Sheet đó cũng được). Ở đây tơi giả sử bạn chọn Sheet1.
Nhập vào hai đoạn code sau đây: Option Explicit
---------------------------------------------------------------- ----
Private Sub Worksheet_Deactivate() On Error Resume Next
Application.CommandBars("MyCustomToolbar").Enabled = Fal se
End Sub
---------------------------------------------------------------- ----
Private Sub Worksheet_Activate() On Error Resume Next
With Application.CommandBars("MyCustomToolbar") .Enabled = True .Visible = True End With On Error GoTo 0 End Sub
Rồi nhấn Alt+Q để quay lại Excel. Bây giờ, bạn hãy dùng chuột hoặc nhấn
Ctrl+PgUp/Ctrl+PgDn để chọn qua lại các Sheet và xem thử cái gì xuất hiện trên
màn hình.