Khi tạo ra các Shapes (hình khối, đường kẻ, mũi tên…) chúng ta thấy chúng luôn hiển thị sẵn trên Excel. Nhưng không phải lúc nào chúng ta cũng muốn như vậy, mà có thể chỉ cần bấm 1 nút là Shapes đó hiện lên, bấm nút 1 lần nữa là Shapes đó ẩn đi. VBA sẽ giúp bạn làm điều đó. Hãy cùng Học Excel Online tìm hiểu cách tạo nút bấm ẩn hiện đường kẻ, hình vẽ trong Excel bằng VBA ngay nào.
Ví dụ:
Trong file Excel chúng ta có 2 Shape gồm:
Xem nhanh
Việc ẩn / hiện Shape thực chất chính là việc tô màu (gồm màu nền và màu đường viền) hay bỏ tô màu của Shape đó. Vì vậy để bắt đầu chúng ta cần biết Code tô màu / bỏ tô màu của Shape như thế nào.
Cách thực hiện như sau:
Chúng ta thu được đoạn code trong VBA như sau:
Trong đoạn code trên ta thấy: đối tượng làm việc ở đây gồm 2 đối tượng:
Đoạn code trên có thể viết lại thành macro HienShape như sau:
Sub HienShape()
With ActiveSheet.Shapes(“Right Arrow 3”).Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent2
End With
With ActiveSheet.Shapes(“Right Arrow 3”).Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent2
End With
End Sub
Các nội dung có giá trị = 0 có thể loại bỏ, không cần dùng tới trong câu lệnh mà không ảnh hưởng gì. Ở đây chúng ta chỉ quan tâm tói 2 thuộc tính:
Dựa vào Macro tô màu Shape ở trên, ta thấy khi thiết lập thuộc tinh Visible = msoFalse thì đối tượng sẽ không xuất hiện. Do đó macro ẩn Shape có thể viết như sau:
Sub AnShape()
With ActiveSheet.Shapes(“Right Arrow 3”).Fill
.Visible = msoFalse
End With
With ActiveSheet.Shapes(“Right Arrow 3”).Line
.Visible = msoFalse
End With
End Sub
Giống như nguyên tắc hoạt động của công tắc bóng đèn:
Chúng ta sẽ viết code để thực hiện việc ẩn / hiện shape mỗi lần bấm chuột vào Shape Ẩn/Hiện như sau:
Câu lệnh được viết như sau:
Sub AnHienShape()
If Range(“D2”).Value = 0 Then ‘Nếu giá trị ô D2 đang là 0 thì
Call HienShape ‘Chạy lệnh HienShape
Range(“D2”).Value = 1 ‘Đổi giá trị tại D2 sang 1
ElseIf Range(“D2”).Value = 1 Then ‘Nếu giá trị ô D2 đang là 1 thì
Call AnShape ‘Chạy lệnh AnShape
Range(“D2”).Value = 0 ‘Đổi giá trị D2 sang 0
End If ‘Kết thúc cấu trúc IF
End Sub
Sau đó chúng ta gán Macro AnHienShape vào Shape Ẩn/Hiện trong Sheet như sau:
Khi đó mỗi lần click chuột vào Shape Ẩn/Hiện chúng ta sẽ chạy Macro AnHienShape 1 lần. Kết quả thu được như sau:
Rất thú vị phải không nào. Chúc các bạn áp dụng tốt kiến thức này vào công việc. Tải file tài liệu kèm theo bài viết tại địa chỉ:
Ngoài ra các bạn có thể tham khảo thêm một số bài viết sau:
Cách gán macro vào biểu tượng nút điều khiển tạo bởi Shapes trong Excel
Hướng dẫn cách tạo menu liên kết nhiều chức năng trong Excel bằng VBA
Hướng dẫn cách cố định Shapes không bị thay đổi ngoài ý muốn trong Excel