Hướng dẫn cách tạo nút bấm ẩn hiện đường kẻ hình vẽ trong Excel bằng VBA

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:

  • Hình mũi tên: biểu thị từ A tới B
  • Hình chữ nhật: khi click chuột vào hình này sẽ làm ẩn / hiện hình mũi tên

Ghi macro tô màu cho Shape

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:

  • Trong thẻ Developer bấm nút Record Macro
  • Bấm vào Shape hình mũi tên
  • Trong thẻ Format (thẻ này hiện ra khi bấm vào Shape) thực hiện tô màu tại Shape Fill và Shape Outline, ví dụ tô màu Orange Accent 2

  • Sau khi thực hiện xong thao tác này, trở lại thẻ Developer rồi bấm Stop Recording

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:

  • Shapes.Fill là màu nền của Shapes
  • Shapes.Line là đường kẻ viền của Shapes

Đ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:

  • Visible: có xuất hiện hay không. Với msoTrue tức là có xuất hiện, còn msoFalse là không xuất hiện
  • ForeColor.ObjectThemColor: tô màu cho đối tượng

Macro ẩn Shape

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

Câu lệnh ẩn / hiện Shape mỗi lần click

Giống như nguyên tắc hoạt động của công tắc bóng đèn:

  • Khi bấm công tắc vào chế độ ON thì bóng đèn sáng
  • Khi bấm công tắc vào chế độ OFF thì bóng đèn tắt

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:

  • Quy ước 1 giá trị đại diện cho việc Ẩn / hiện, ví dụ 1 là Hiện, 0 là Ẩn
  • Mỗi khi click để hiện, gán giá trị 1 vào 1 ô nào đó (ví dụ ô D2)
  • Mỗi khi click để ẩn, gán giá trị 0 vào ô D2 thay cho giá trị 1
  • Nếu giá trị ô D2 đang là 0 thì sẽ đổi sang 1, còn khi giá trị ô D2 đang là 1 sẽ đổi sang 0

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:

  • Bấm chuột phải vào shape Ẩn/hiện
  • Chọn Assign Macro
  • Trong cửa sổ Assign Macro chọn macro AnHienShape

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


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản