Excelで図形を使って操作画面を作っていると、こんなことはありませんか?
- 特定の図形だけ表示・非表示を切り替えたい
- ボタンを押したらメニューを表示したい
- 画面をスッキリさせたい
このような場合は、VBAで図形の表示・非表示を制御すると簡単に実現できます。
この記事では、初心者向けに図形の表示・非表示を切り替える方法を解説します。
この記事でできること
- 図形を非表示にする
- 図形を再表示する
- クリックで表示切替する
- 複数の図形をまとめて制御する
図形を非表示にする基本コード
まずは、指定した図形を非表示にするコードです。
Option Explicit
Sub HideShape()
ActiveSheet.Shapes("Rectangle 1").Visible = msoFalse
End Sub
これで「Rectangle 1」という図形が非表示になります。
図形を再表示するコード
Sub ShowShape()
ActiveSheet.Shapes("Rectangle 1").Visible = msoTrue
End Sub
非表示にした図形を再び表示できます。
表示・非表示を切り替える(トグル)
1つのボタンで表示/非表示を切り替える方法です。
Sub ToggleShape()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Rectangle 1")
If shp.Visible = msoTrue Then
shp.Visible = msoFalse
Else
shp.Visible = msoTrue
End If
End Sub
クリックするたびに表示状態が切り替わります。
複数の図形をまとめて非表示にする
複数の図形を一括で非表示にする場合はこちらです。
Sub HideMultipleShapes()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
shp.Visible = msoFalse
Next shp
End Sub
特定の図形だけ対象にする方法
名前で指定すると安全です。
Sub HideSelectedShapes()
ActiveSheet.Shapes("Menu1").Visible = msoFalse
ActiveSheet.Shapes("Menu2").Visible = msoFalse
End Sub
クリックで表示切替する方法
図形をボタンとして使う場合は、マクロを登録します。
Sub SetToggle()
ActiveSheet.Shapes("Button1").OnAction = "ToggleShape"
End Sub
これで図形をクリックすると表示切替ができます。
クリックされた図形を非表示にする
押された図形自身を消すこともできます。
Sub HideClickedShape()
Dim shpName As String
shpName = Application.Caller
ActiveSheet.Shapes(shpName).Visible = msoFalse
End Sub
実務での活用例
- メニューの開閉(UI作成)
- 詳細表示の切り替え
- 条件に応じたボタン表示
- ダッシュボードの切替画面
特に、Excelを「アプリっぽく」使いたい場合に効果的です。
よくあるエラーと対処法
① 図形名が違う
図形名は正確に指定する必要があります。
Sub CheckShapeNames()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
Debug.Print shp.Name
Next shp
End Sub
② コードは正しいのにエラーになる
コピペ時に全角文字が混ざることがあります。
その場合は、該当行を手入力し直してください。
まとめ
- 図形の表示・非表示はVisibleで制御できる
- msoTrue / msoFalseで切り替える
- トグル処理でUIが作れる
- ボタン操作と組み合わせると便利
図形の表示制御を使えば、Excelをより操作しやすい画面にできます。
ダッシュボードや入力画面の作成にぜひ活用してみてください。

コメント