「FirstLineIndent エクセル」
といった検索でアクセスがありました。
Excel VBAのFirstLineIndentプロパティについて調べていた方による検索です。
FirstLineIndentを設定するサンプルマクロ
以下のマクロが参考になるでしょうか。
Dim shp As Shape
Set shp = _
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
0, 0, 100, 100)
shp.TextFrame2.TextRange.Text = _
"ACB" & vbVerticalTab & "DEF" & vbVerticalTab & "GHI"
shp.TextFrame2.TextRange.ParagraphFormat.FirstLineIndent = 10
End Sub
拙著『理解するExcel VBA/図形操作の基本』の[chapter6. TextFrame2を経由した文字列操作]で解説している、TextFrame2オブジェクトなどを使ったExcelマクロです。
実行すると、アクティブシートの左上にテキストボックスが挿入されて、文字列「ABCDEFGHI」が3文字ずつに改行を入れて入力され、1行目の「ABC」がインデントされます。
マクロで行っている処理
名前のとおり、ParagraphFormat.FirstLineIndentプロパティを使うと、段落の1行目のインデントを操作できます。
オブジェクトブラウザーで検索すればわかるとおり、FirstLineIndentプロパティは、OfficeライブラリのParagraphFormat2オブジェクトにのみ用意されています。
Office.ParagraphFormat2を取得するオブジェクトモデル
FirstLineIndentプロパティを持つ、ParagraphFormat2オブジェクトを取得するために、以下のような階層を辿っています。
Shape.TextFrame2プロパティで、TextFrame2オブジェクトを取得して、
shp.TextFrame2.TextRange.ParagraphFormat.FirstLineIndent = 10
TextFrame2オブジェクトのTextRangeプロパティで、TextRange2オブジェクトを取得し、
shp.TextFrame2.TextRange.ParagraphFormat.FirstLineIndent = 10
TextRange2オブジェクトのParagraphFormatプロパティで、ParagraphFormat2オブジェクトを取得しています。
shp.TextFrame2.TextRange.ParagraphFormat.FirstLineIndent = 10
上記のオブジェクトモデルは、拙著などを参考にしてご自分の手を動かして、オブジェクトブラウザーやローカルウィンドウで確認してください。
FirstLineIndentは段落の1行目のインデント量を取得・設定
FirstLineIndentプロパティは、段落の1行目のインデント量を取得・設定するプロパティです。
上記ののマクロでは、複数行だけど同じ段落にするために、改行コードとしてvbVerticalTabを使っています。
shp.TextFrame2.TextRange.Text = _
"ACB" & vbVerticalTab & "DEF" & vbVerticalTab & "GHI"
最終更新日時:2024-02-15 10:33
Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » Excel VBAでFirstLineIndentを設定する