こんにちは、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です。
指定するタイプ(図形)については、以下に一覧表を示します。
この図形タイプはコメントの挿入で形状を指定する場合も同一ですから、よく使うものは覚えておくと便利です。
コメント挿入については別記事で書いてますので、よろしければぜひ!
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では「図形が積み重ねられていく」ので、必要に応じて削除したりなどの処理を追加しないと、猛烈にファイルが重くなりますからね!(経験あり)
以上、図形(オートシェイプ)を作成し文字列表示する方法についてでした!
今回の記事が何かの参考になれば幸いです。
作成した図形の枠線や塗りつぶし、テキスト配置などについては以下記事でまとめています。
よかったら参考にしてみてくださいね。
Ryo