「Excel vba shape HorizontalAlignment」
のような検索で、時折アクセスがあります。
Excel VBAで、図形を表すShapeオブジェクトにHorizontalAlignmentプロパティがある、と考えていた方による検索でしょうか。
ShapeにHorizontalAlignmentはない
Excel VBAのShapeオブジェクトには、文字列の水平方向の配置位置を取得/設定するためのHorizontalAlignmentプロパティはありません。
オブジェクトブラウザーで「HorizontalAlignment」を完全一致検索すると、
上図のとおり複数のオブジェクトにHorizontalAlignmentプロパティがあることを確認できますが、Shapeオブジェクトはヒットしていません。[クラス]列に「Shape」は見当たりません。
Shape内文字列を操作するためのオブジェクトモデル
拙著『理解するExcel VBA/図形操作の基本』の、「chapter 4. Shape内の文字列を操作する」でも解説しているとおり、Shape内文字列は以下のような階層構造になっています。
Woksheetオブジェクト └ Shapeオブジェクト └ TextFrameオブジェクト └ Charactersオブジェクト
この中でHorizontalAlignmentプロパティが用意されているのは、文字列枠を表すオブジェクトTextFrameです。
Shape内文字列のHorizontalAlignmentを設定するサンプル
具体的なコードを見ましょう。
ActiveSheet.Shapes(1)で取得できる、アクティブシート上の1つ目の図形に文字列を入力しておいて、以下のExcelマクロを実行すると文字列が右揃えに設定されます。
Dim shp As Shape
Set shp = ActiveSheet.Shapes(1)
shp.TextFrame.HorizontalAlignment = xlHAlignRight
End Sub
HorizontalAlignmentプロパティが用意されているのは、Shapeの子オブジェクトであるTextFrameです。
最終更新日時:2022-05-31 04:15
- Newer:Axes(xlValue)とは
- Older:DataLabelの位置をVBAで取得する
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » ShapeのHorizontalAlignmentは??