ExcelのVBAにて、図形を操作する方法をご説明いたします。
主な操作として、以下の3つをご紹介いたします。
- 表示/非表示を切り替える
- 図形内の文字を変更する(テキストの編集)
- 図形内の文字の色を変更する
はじめに:図形の名前の確認とマクロの登録
図形を操作するためには、まずは図形の名前の確認と、マクロの登録をしておく必要があります。
名前の確認
VBAで扱いたい図形を右クリックして、左上のボックスに表示される名前(下図でいうと「正方形/長方形 2」)を確認しておきます。

マクロの登録
例えば、下図のシートで図形1をクリックしたら、図形2を非表示にしたい場合、図形1にマクロを登録する必要があります。



図形の表示/非表示を切り替える
まずは、先ほどの説明で使用したシートで、「図形1をクリックしたら、図形2を非表示にする」という処理を組み込んでみます。
【記述方法】
シート名.図形名.Visible = False
シート名は、必ず指定して下さい。
図形名は、先ほどの説明で調べておいた名前を使います。
実際のコードは以下のようになります。
先ほどの説明で「マクロの登録」をしたプロシージャに、以下のコードを記述して下さい。
Sub OperationShapes()
Sheets("Sheet1").Shapes("正方形/長方形 2").Visible = False
End Sub



次に、以下のような処理を組み込んでみます。
- 図形2が表示されている場合、図形1をクリックしたら、図形2を非表示にする
- 図形2が表示されていない場合、図形1をクリックしたら、図形2を表示する
Sub OperationShapes()
If Sheets("Sheet1").Shapes("正方形/長方形 2").Visible = True Then
Sheets("Sheet1").Shapes("正方形/長方形 2").Visible = False
Else
Sheets("Sheet1").Shapes("正方形/長方形 2").Visible = True
End If
End Sub
これで、図形1をクリックするたびに、図形2の表示/非表示の状態が切り替わります。
図形内の文字を変更する(テキストの編集)
以下の方法で、図形内の文字を変更できます。
図形を右クリックして、[テキストの編集] をした時と同じ動作を、VBAで実装できます。
シート名.図形名.TextFrame.Characters.Text = "入力したい文字列"
先ほどの図形の表示/非表示の切り替えを行うサンプル処理に、以下の処理を追加してみます。
- 図形2が表示されている場合、図形1をクリックしたら、図形1の文字を「図形を表示」にする
- 図形2が表示されていない場合、図形1をクリックしたら、図形1の文字を「図形を非表示」にする
Sub OperationShapes()
If Sheets("Sheet1").Shapes("正方形/長方形 2").Visible = True Then
Sheets("Sheet1").Shapes("正方形/長方形 2").Visible = False
Sheets("Sheet1").Shapes("四角形: 角を丸くする 1").TextFrame.Characters.Text = "図形を表示"
Else
Sheets("Sheet1").Shapes("正方形/長方形 2").Visible = True
Sheets("Sheet1").Shapes("四角形: 角を丸くする 1").TextFrame.Characters.Text = "図形を非表示"
End If
End Sub
実行結果は、以下のようになります。





このように、図形1をクリックするたびに、図形1の文字が「図形を表示」「図形を非表示」に切り替わります。
図形内の文字の色を変更する
以下の方法で、図形内の文字の色を変更できます。
シート名.図形名.TextFrame.Characters.Font.Color = RGB(赤, 緑, 青)
右辺はVBAの「RGB関数」といって、「赤」「緑」「青」をそれぞれ0~255の数値で指定すると、色を設定できます。
代表的な色の指定方法は、以下の通りです。
- 黒:RGB(0,0,0)
- 赤:RGB(255,0,0)
- 緑:RGB(0,255,0)
- 青:RGB(0,0,255)
- 黄色:RGB(255,255,0)
- マゼンタ:RGB(255,0,255)
- シアン:RGB(0,255,255)
- 白:RGB(255,255,255)
例えば、先ほど使ったサンプルのシートで以下のようにすると、図形1の文字を赤色・図形2の文字を青色にできます。
Sub OperationShapes()
Sheets("Sheet1").Shapes("四角形: 角を丸くする 1").TextFrame.Characters.Font.Color = RGB(255, 0, 0)
Sheets("Sheet1").Shapes("正方形/長方形 2").TextFrame.Characters.Font.Color = RGB(0, 0, 255)
End Sub



コメント