【VBA】図形(オートシェイプ)を作成し文字列表示する

これで楽に!?VBA活用

こんにちは、Ryoです。
Excel VBAで処理する中で私がいつも大変だなぁと思うのは、何と言ってもUI(ユーザーインターフェイス)で、ただ処理結果をアウトプットするだけでは使い難いことこの上ないものになりますから、視覚的にわかりやすくする配慮も必要と考えます。

視覚的に訴える上で欠かせないのは図形の活用ですから、今回は図形を作成、及びテキスト(文字)を表示する方法について書いてみようと思います。

スポンサーリンク

1.サンプルコード

図形を作成するにはAddShapeメソッドを使います。

オブジェクト.AddShape(タイプ,Left,Top,Width,Height)

タイプは後述する一覧表で指定する「図形」の種類で、Left/Top/Width/Heightはワークシートに対しは左端からの位置、上端からの位置、図形の幅、図形の高さを指定します。

使い方は簡単なので、サンプルコードを参照してもらえればわかると思います。

Sub Sample1()

 Worksheets("Sheet1").Shapes.AddShape _
 (msoShapeExplosion1, 120, 50, 100, 70).Select

End Sub

サンプル1はSheet1に爆発型図形を挿入します。

挿入した図形に文字列を表示する場合は、以下になります。

Sub Sample2()

 Worksheets("Sheet1").Shapes.AddShape _
 (msoShapeExplosion1, 120, 50, 100, 70). _
 TextFrame.Characters.Text = "文字!"

End Sub


このようになります。
サンプルコード内の Worksheets(“Sheet1”).Shapes.AddShapeは、アクティブシート上に挿入するのであれば「ActiveSheet.Shapes.AddShape」という記述でもOKです。

指定するタイプ(図形)については、以下に一覧表を示します。
この図形タイプはコメントの挿入で形状を指定する場合も同一ですから、よく使うものは覚えておくと便利です。

コメント挿入については別記事で書いてますので、よろしければぜひ!

【VBA】セルへコメントの挿入/コメントの取得方法
こんにちは、Ryoです。 Excelで使うコメント機能は便利なので、何かと使用する機会も多いかと思います。 勿論VBAを使ってコメントを挿入したり、コメント内容を取得することも可能なので、 記録として残したいけど他に使う予定がないデータ等...

2.Typeに指定する図形

名前形状の説明
msoShape16pointStar星16
msoShape24pointStar星24
msoShape32pointStar星32
msoShape4pointStar星4
msoShape5pointStar星5
msoShape8pointStar星8
msoShapeActionButtonBackorPrevious「戻る」Or「前へ」ボタン
msoShapeActionButtonBeginning「上旬」ボタン
msoShapeActionButtonCustom規定画像Orテキストの無いボタン
msoShapeActionButtonDocument「文書」ボタン
msoShapeActionButtonEnd「終了」ボタン
msoShapeActionButtonForwardorNext「進む」Or「次へ」ボタン
msoShapeActionButtonHelp「ヘルプ」ボタン
msoShapeActionButtonHome「ホーム」ボタン
msoShapeActionButtonInformation「情報」ボタン
msoShapeActionButtonMovie「ビデオ」ボタン
msoShapeActionButtonReturn「戻る」ボタン
msoShapeActionButtonSound「サウンド」ボタン
msoShapeArc円弧
msoShapeBalloon吹出し
msoShapeBentArrow90°曲線&矢印
msoShapeBentUpArrow90°鋭角線&矢印
msoShapeBevel斜角
msoShapeBlockArcアーチ
msoShapeCan円柱
msoShapeChevron山形
msoShapeCircularArrow180°曲線&矢印
msoShapeCloudCallout雲形吹出し
msoShapeCross十字
msoShapeCube直方体
msoShapeCurvedDownArrow下カーブ&矢印
msoShapeCurvedDownRibbon下カーブ&リボン
msoShapeCurvedLeftArrow左カーブ&矢印
msoShapeCurvedRightArrow右カーブ&矢印
msoShapeCurvedUpArrow上カーブ&矢印
msoShapeCurvedUpRibbon上カーブ&リボン
msoShapeDiamondひし形
msoShapeDonutドーナツ形
msoShapeDoubleBrace中かっこ
msoShapeDoubleBracket大かっこ
msoShapeDoubleWave小波
msoShapeDownArrow下向き矢印
msoShapeDownArrowCallout下矢印&吹出し
msoShapeDownRibbonリボン(中央面下部)
msoShapeExplosion1爆発形
msoShapeExplosion2爆発形
msoShapeFlowchartAlternateProcess代替処理(フローチャート)
msoShapeFlowchartCardカード(フローチャート)
msoShapeFlowchartCollate照合(フローチャート)
msoShapeFlowchartConnector結合子(フローチャート)
msoShapeFlowchartDataデータ(フローチャート)
msoShapeFlowchartDecision判断(フローチャート)
msoShapeFlowchartDelay論理積ゲート(フローチャート)
msoShapeFlowchartDirectAccessStorage直接アクセス記憶(フローチャート)
msoShapeFlowchartDisplay表示(フローチャート)
msoShapeFlowchartDocument書類(フローチャート)
msoShapeFlowchartExtract抜き出し(フローチャート)
msoShapeFlowchartInternalStorage内部記憶(フローチャート)
msoShapeFlowchartMagneticDisk磁気ディスク(フローチャート)
msoShapeFlowchartManualInput手操作入力(フローチャート)
msoShapeFlowchartManualOperation手作業(フローチャート)
msoShapeFlowchartMerge組み合わせ(フローチャート)
msoShapeFlowchartMultidocument複数書類(フローチャート)
msoShapeFlowchartOffpageConnector他ページ結合子(フローチャート)
msoShapeFlowchartOr論理和(フローチャート)
msoShapeFlowchartPredefinedProcess定義済み処理(フローチャート)
msoShapeFlowchartPreparation準備(フローチャート)
msoShapeFlowchartProcess処理(フローチャート)
msoShapeFlowchartPunchedTapeせん孔テープ(フローチャート)
msoShapeFlowchartSequentialAccessStorage順次アクセス記憶(フローチャート)
msoShapeFlowchartSort分類(フローチャート)
msoShapeFlowchartStoredData記憶データ(フローチャート)
msoShapeFlowchartSummingJunction和接合(フローチャート)
msoShapeFlowchartTerminator端子(フローチャート)
msoShapeFoldedCornerメモ
msoShapeHeartハート
msoShapeHexagon六角形
msoShapeHorizontalScroll横巻き
msoShapeIsoscelesTriangle二等辺三角形
msoShapeLeftArrow左向き矢印
msoShapeLeftArrowCallout左矢印&吹出し
msoShapeLeftBrace左中括弧
msoShapeLeftBracket左大括弧
msoShapeLeftRightArrow左右矢印
msoShapeLeftRightArrowCallout左右矢印&吹出し
msoShapeLeftRightUpArrow左、右、上の3方向矢印
msoShapeLeftUpArrow左、上の2方向矢印
msoShapeLightningBolt稲妻
msoShapeLineCallout1枠付き水平吹出し線付きの吹出し
msoShapeLineCallout1AccentBar水平強調線付きの吹出し
msoShapeLineCallout1BorderandAccentBar枠付き&水平強調線付きの吹出し
msoShapeLineCallout1NoBorder水平線付きの吹出し
msoShapeLineCallout2斜め直線付きの吹出し
msoShapeLineCallout2AccentBar斜め強調線&吹出し線付きの吹出し
msoShapeLineCallout2BorderandAccentBar枠、斜め直線、強調線付きの吹出し
msoShapeLineCallout2NoBorder枠&斜め吹出し線の無い吹出し
msoShapeLineCallout3折れ線付き吹出し
msoShapeLineCallout3AccentBar折れた吹出し線&強調線付きの吹出し
msoShapeLineCallout3BorderandAccentBar枠、折れた吹出し線、強調線付きの吹出し
msoShapeLineCallout3NoBorder枠、折れた吹出し線のない吹出し線
msoShapeLineCallout4U字型吹出し線分付きの吹出し
msoShapeLineCallout4AccentBar強調線&U字型吹出し線分付き吹出し
msoShapeLineCallout4BorderandAccentBar枠線、強調線、U字型吹出し線分付きの吹出し
msoShapeLineCallout4NoBorder枠線、U字型吹出し線分のない吹出し
msoShapeMixed値のみ
msoShapeMoon
msoShapeNoSymbol禁止
msoShapeNotchedRightArrow右向きV字型矢印
msoShapeOctagon八角形
msoShapeOval楕円
msoShapeOvalCallout円形吹出し
msoShapeParallelogram平行四辺形
msoShapePentagonホームベース
msoShapePlaqueブローチ
msoShapeQuadArrow4方向矢印
msoShapeQuadArrowCallout4方向矢印付き吹出し
msoShapeRectangle四角形
msoShapeRectangularCallout四角形吹出し
msoShapeRegularPentagonホームベース
msoShapeRightArrow右向き矢印
msoShapeRightArrowCallout右向き矢印付き吹出し
msoShapeRightBrace右中括弧
msoShapeRightBracket右大括弧
msoShapeRightTriangle直角三角形
msoShapeRoundedRectangle角丸四角形
msoShapeRoundedRectangularCallout角丸四角形吹出し
msoShapeSmileyFaceスマイル
msoShapeStripedRightArrowストライプ付きの右向き矢印
msoShapeSun太陽
msoShapeTrapezoid台形
msoShapeUpArrow上向き矢印
msoShapeUpArrowCallout上矢印&吹出し
msoShapeUpDownArrow上下2方向矢印
msoShapeUpDownArrowCallout上下2方向矢印&吹出し
msoShapeUpRibbon中央面上のリボン
msoShapeUTurnArrowU字型矢印
msoShapeVerticalScroll縦巻き
msoShapeWave大波

この通り豊富な種類がありますね。
当然ながら全部覚える必要はないですから、何か変わった図形無いかなーと思った時にでも参照してもらえれば良いかと思います。

3.まとめ

オブジェクト.AddShape(タイプ,Left,Top,Width,Height)は位置やサイズ指定も出来ますから、何かと使う場面は多いです。ただ気を付けたい点は、必ず毎回同じ位置に図形を作成しますので日に何回も処理するSheetでは「図形が積み重ねられていく」ので、必要に応じて削除したりなどの処理を追加しないと、猛烈にファイルが重くなりますからね!(経験あり)



以上、図形(オートシェイプ)を作成し文字列表示する方法についてでした!
今回の記事が何かの参考になれば幸いです。

作成した図形の枠線や塗りつぶし、テキスト配置などについては以下記事でまとめています。

【VBA】図形(オートシェイプ)やシェイプ内文字の色を操作する
こんにちは、Ryoです。 先日の記事でVBAによるシート内に図形を作成する内容を書きましたが、実際使用する上では作成した図形に色を塗りたい、枠線も塗りつぶした色に合わせたい、図形内に表示した文字の色を変えたい・・・等々思うことがありますよね...

よかったら参考にしてみてくださいね。

Ryo

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