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 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 = msoThemeColorAccent2End WithWith ActiveSheet.Shapes(“Right Arrow 3”).Line.Visible = msoTrue.ForeColor.ObjectThemeColor = msoThemeColorAccent2End WithEnd 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:
- isible: 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 HienShapeRange(“D2”).Value = 1 ‘Đổi giá trị tại D2 sang 1ElseIf Range(“D2”).Value = 1 Then ‘Nếu giá trị ô D2 đang là 1 thìCall AnShape ‘Chạy lệnh AnShapeRange(“D2”).Value = 0 ‘Đổi giá trị D2 sang 0End If ‘Kết thúc cấu trúc IFEnd 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.
- Bài viết được chia sẽ trên trang www.tuhocexcel.net , Chia sẽ vui lòng ghi rõ nguồn gốc bài đăng.
- Group tham gia Tự Học Excel : https://www.facebook.com/groups/1716543358373810/
- Clip Tự học Excel - Xem tại đây : http://www.tuhocexcel.net/videos
- Mọi thắc mắc, góp ý vui lòng mail về địa chỉ : tuhocexcel2018@gmail.com
hoặc liên hệ qua : http://www.tuhocexcel.net/p/lien-he-tu-hoc-excel.html
Post a Comment