PR

【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 吹出し
msoShapeBentArrow 90°曲線&矢印
msoShapeBentUpArrow 90°鋭角線&矢印
msoShapeBevel 斜角
msoShapeBlockArc アーチ
msoShapeCan 円柱
msoShapeChevron 山形
msoShapeCircularArrow 180°曲線&矢印
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 枠、折れた吹出し線のない吹出し線
msoShapeLineCallout4 U字型吹出し線分付きの吹出し
msoShapeLineCallout4AccentBar 強調線&U字型吹出し線分付き吹出し
msoShapeLineCallout4BorderandAccentBar 枠線、強調線、U字型吹出し線分付きの吹出し
msoShapeLineCallout4NoBorder 枠線、U字型吹出し線分のない吹出し
msoShapeMixed 値のみ
msoShapeMoon
msoShapeNoSymbol 禁止
msoShapeNotchedRightArrow 右向きV字型矢印
msoShapeOctagon 八角形
msoShapeOval 楕円
msoShapeOvalCallout 円形吹出し
msoShapeParallelogram 平行四辺形
msoShapePentagon ホームベース
msoShapePlaque ブローチ
msoShapeQuadArrow 4方向矢印
msoShapeQuadArrowCallout 4方向矢印付き吹出し
msoShapeRectangle 四角形
msoShapeRectangularCallout 四角形吹出し
msoShapeRegularPentagon ホームベース
msoShapeRightArrow 右向き矢印
msoShapeRightArrowCallout 右向き矢印付き吹出し
msoShapeRightBrace 右中括弧
msoShapeRightBracket 右大括弧
msoShapeRightTriangle 直角三角形
msoShapeRoundedRectangle 角丸四角形
msoShapeRoundedRectangularCallout 角丸四角形吹出し
msoShapeSmileyFace スマイル
msoShapeStripedRightArrow ストライプ付きの右向き矢印
msoShapeSun 太陽
msoShapeTrapezoid 台形
msoShapeUpArrow 上向き矢印
msoShapeUpArrowCallout 上矢印&吹出し
msoShapeUpDownArrow 上下2方向矢印
msoShapeUpDownArrowCallout 上下2方向矢印&吹出し
msoShapeUpRibbon 中央面上のリボン
msoShapeUTurnArrow U字型矢印
msoShapeVerticalScroll 縦巻き
msoShapeWave 大波

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

3.まとめ

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



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

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

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

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

Ryo

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