【Excel VBA】シェイプを自由自在に操る応用テクニック2選(調整・種類変更)

目次

はじめに

Excel VBAで図形(シェイプ)操作の基本をマスターすると、次にもっと細かな調整や、よりダイナミックな変更を自動化したくなりますよね。

今回は、一歩進んだシェイプ操作として、

  1. 吹き出しの引き出し線など、図形の形状を細かく調整する方法
  2. シート上にある特定の種類の図形だけを一括で別の形に置換する方法

という、実用性の高い2つの応用テクニックを解説します。


応用テク1:Adjustmentsプロパティで図形の「調整ハンドル」を操る

吹き出しや角丸四角形、矢印ブロックなど、一部の図形には、選択すると表示される**黄色のひし形のハンドル(調整ハンドル)**があります。これをドラッグすると、角の丸みや矢印の太さ、引き出し線の位置などを調整できますよね。

この調整ハンドルの位置をVBAで制御するのが、.Adjustmentsプロパティです。

実践コード:吹き出しと角丸四角形を調整する

事前準備

シートに「吹き出し」と「角丸四角形」を一つずつ作成し、それぞれに「SampleCallout」「SampleRoundedRect」という名前を付けておきましょう。

VBAコード例

Sub ControlShapeAdjustments()

    '--- 吹き出しの引き出し線の位置を調整 ---
    With ActiveSheet.Shapes("SampleCallout").Adjustments
        ' 1番目のハンドル:引き出し線の付け根の横位置を調整
        .Item(1) = -0.8
        
        ' 2番目のハンドル:引き出し線の先端の縦位置を調整
        .Item(2) = 0.4
    End With

    '--- 角丸四角形の角の丸みを調整 ---
    ' 1番目のハンドルが角の半径を制御する
    ' 値は 0(直角) ~ 0.5(半径が最大) の範囲で指定
    ActiveSheet.Shapes("SampleRoundedRect").Adjustments.Item(1) = 0.5

End Sub

コードの解説

  • .Adjustmentsプロパティは、複数の調整ハンドルを管理するため、Adjustments(1)Adjustments.Item(1)のようにインデックス番号で操作対象のハンドルを指定します。
  • どの番号のハンドルが図形のどの部分に対応するかは、図形の種類によって異なります。
  • 設定する値は、多くの場合、図形の幅や高さに対する比率で指定します。いろいろな値を試して、どのように形状が変化するかを確認するのが理解への近道です。

応用テク2:特定の図形だけ種類を一括で置換する

次に、シート上にある多数の図形の中から、特定の種類の図形だけを探し出し、別の種類に一括で変更するテクニックです。フローチャートの記号をまとめて変更したい場合などに絶大な効果を発揮します。

実践コード:シート上の「星」をすべて「ハート」に変更する

事前準備

シート上に、複数の「五角形の星」と、それ以外の図形(四角形や円など)を混在させて配置しておきます。

VBAコード例

Sub ChangeSpecificShapes()

    ' シート上のシェイプを一つずつ格納するための変数を宣言
    Dim currentShape As Shape

    ' For Eachループで、アクティブなシート上の全シェイプを一つずつチェック
    For Each currentShape In ActiveSheet.Shapes
    
        ' もしシェイプの種類が「五角形の星」だったら...
        If currentShape.AutoShapeType = msoShape5pointStar Then
        
            ' ...そのシェイプの種類を「ハート」に変更する
            currentShape.AutoShapeType = msoShapeHeart
            
        End If
        
    Next currentShape

    MsgBox "シート上のすべての「星」を「ハート」に変更しました。"

End Sub

コードの解説

このコードは、For Eachループでシート上の全シェイプを巡回し、.AutoShapeTypeプロパティを調べています。もし種類がmsoShape5pointStar(五角形の星)であった場合だけ、同じプロパティにmsoShapeHeart(ハート)を代入することで、形を置き換えています。

このロジックを使えば、どんな種類の図形でも、好きな形に一括で変更できます。


まとめ

今回は、VBAによるシェイプ操作の応用テクニックを2つご紹介しました。

  1. .Adjustmentsプロパティ: 図形の「調整ハンドル」をVBAで操作し、形状を細かくチューニングする。
  2. .AutoShapeTypeプロパティの置換: For EachループとIf文を組み合わせ、特定の図形だけを別の種類に一括で変更する。

これらのテクニックを使いこなせば、手作業では面倒な図形の微調整や、大量の図形のデザイン変更作業を自動化し、資料作成の質とスピードを大きく向上させることができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次