こんにちは、Ryoです。
図形などの表示/非表示の処理を行うにはVisibleプロパティを利用しますが、今回はワークシート上に配置したボタンなどのクリック動作により表示と非表示の切り替えを行う方法について書いていきたいと思います。
1.サンプル概要
Sheet1上に図形を配置し「rectangle1」と名前を設定しています。

上の図形同様、同Sheet1上に表示/非表示切り替え動作用のボタンを配置し「Button1」と名前を設定し、サンプルコードを割付けています。

「Button1」のテキストが「表示中」の場合は図形が表示されていますが、ボタンをクリックすることでテキストが「非表示中」に変わり図形が非表示化されます。

再度ボタンを押すとテキストが「表示中」に変わり、図形が表示されます。このようにボタンをクリックする毎に表示/非表示を切り替えます。

以上がサンプル概要になります。
2.サンプルコード
Sub Button1_Click()
'ボタンクリック毎に図形の表示/非表示を切り替える
'Sheet1に配置したボタン「Button1」に対する処理
With Worksheets("Sheet1").Shapes("Button1") _
.TextFrame.Characters
'テキストが「表示中」→「非表示中」へ変更
If .Text = "表示中" Then
.Font.Name = "メイリオ"
.Font.Size = 16
.Font.Color = RGB(255, 25, 25)
.Font.Bold = True
.Text = "非表示中"
'「非表示中」→「表示中」へ変更
Else
.Font.Name = "Meiryo UI"
.Font.Size = 14
.Font.Color = RGB(25, 25, 255)
.Font.Bold = False
.Text = "表示中"
End If
End With
'Sheet1上の図形「rectangke1」の表示/非表示切り替え
'Not演算子を利用することで簡潔に処理が可能
'「Button1」クリック毎に表示/非表示となる
Worksheets("Sheet1").Shapes("rectangle1").Visible = _
Not Worksheets("Sheet1").Shapes("rectangle1").Visible
End Sub
ボタンクリックの際にテキスト文字を切り替えていますので、最初はその処理を行っています。ワークシート「Sheet1」にある図形「Button1」に対してTextFrame.Characters メソッドを利用して表示テキストの判定やフォント設定などを行っています。
With Worksheets(“Sheet1”).Shapes(“Button1”).TextFrame.Characters
.Textについては「表示中/非表示中」を切り替えるために必要ですが、フォントに関する設定(名前やサイズ、太字、色)は外観上の部分なので任意で良いと思います。
次にSheet1上の図形「rectangle1」に対して表示と非表示の処理をVisibleプロパティを利用して実行します。
構文:オブジェクト.Visible = True/False
Visibleプロパティはオブジェクトに指定した図形の表示/非表示を設定するもので、True =表示/False=非表示となります。
このVisibleプロパティにNot演算子を組み合わせて使用することで、簡単に表示/非表示の切り替えを行うことができます。
Worksheets(“Sheet1”).Shapes(“rectangle1”).Visible = _
Not Worksheets(“Sheet1”).Shapes(“rectangle1”).Visible
3.まとめ
Visibleプロパティは表示/非表示の設定を行うものなので利用頻度も高く、他の記事でも紹介しているものですが、比較的扱うケースが多そうな図形に対する表示/非表示切り替えという観点で書いています。
切り替えという点ではNot演算子を利用すると簡単に対処できますので、知っておくと有効に利用できるケースも多々あるかと思います。
以上、図形の表示/非表示の切り替えを行う方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo

