【Excel VBA】図形(Shape)の操作

Excel
スポンサーリンク

ExcelのVBAにて、図形を操作する方法をご説明いたします。
主な操作として、以下の3つをご紹介いたします。

  1. 表示/非表示を切り替える
  2. 図形内の文字を変更する(テキストの編集)
  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

コメント

タイトルとURLをコピーしました