Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » Excel VBAでFirstLineIndentを設定する

Excel VBAでFirstLineIndentを設定する

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2402(ビルド17328.20000クイック実行)ベータチャネル

「FirstLineIndent エクセル」
といった検索でアクセスがありました。

Excel VBAのFirstLineIndentプロパティについて調べていた方による検索です。

FirstLineIndentを設定するサンプルマクロ

以下のマクロが参考になるでしょうか。

Sub 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を設定する

「図形内文字列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.