表内の文字列をすべて中央揃えにするPowerPointマクロをご紹介しています。
実務上は、表の1行目だけを中央揃えにしたいというケースのほうが多いでしょう。
この場合、1行目の各セルに対してFor Each~Nextループを回すほうが、比較的シンプルなコードで済みます。
表の1行目文字列を中央揃えにするサンプルマクロ
以下のSubプロシージャを実行すると、アクティブプレゼンテーション先頭スライドの、2つ目のShape内に存在する表の、1行目の文字列が中央揃えになります。
Dim tbl As Table
Set tbl = ActivePresentation.Slides(1).Shapes(2).Table Dim cel As Cell
For Each cel In tbl.Rows(1).Cells
cel.Shape.TextFrame _
.TextRange.ParagraphFormat.Alignment _
= ppAlignCenter
Next
End Sub
1行目のCellRangeコレクションに対してFor Each~Nextループを回し、
Dim cel As Cell
For Each cel In tbl.Rows(1).Cells
各Cellの文字列を中央揃えにしています。
cel.Shape.TextFrame _
.TextRange.ParagraphFormat.Alignment _
= ppAlignCenter
拙著『いちばんやさしいExcel VBAの教本』でも多用しているショートカットキー[F8]でステップ実行を行い、For Each~Nextループの中で、1行目のセルが順番に中央揃えになる様子を、自分の目で見て確認することをおすすめします。
中央揃えにする際に各Cellオブジェクトで、
Shapeオブジェクト
└ TextFrameオブジェクト
└ TextRangeオブジェクト
└ ParagraphFormatオブジェクト
└ Aliginmentプロパティ
と深い階層を辿る必要があるのは、全セルを中央揃えにする場合と同じです。
Row.Cellsが返すのはCellRangeでCellRange.Itemが返すのはCell
上記のSubプロシージャで使っているオブジェクトを取得するコード(オブジェクト式)は、注意すべき箇所があります。
表の各行を表すRowオブジェクトに用意されているCellsプロパティで取得できるのは、行内の全セルを表すCellRangeコレクションです。
Cellsコレクションや、Excel VBAのようなRangeオブジェクトではありません。
ちなみに、オブジェクトブラウザーで「cells」を検索すればわかるとおり、PowerPoint VBAに、Cellsコレクションは存在しません。
また、CellRangeコレクションのItemメソッドで取得できる単独のオブジェクトは、Cellオブジェクトです。
Presentationsプロパティで取得できるのがPresentaionsコレクションで、PresentationsコレクションのItemメソッドで取得できるのがPresentationオブジェクトであるのとは、随分と違う名前の関係になっていますから、注意が必要です。
For~Next文を使って表の1行目文字列を中央揃えにする
For Each~Next文ではなく、For~Next文を使う場合は以下のとおりです。
Dim tbl As Table
Set tbl = ActivePresentation.Slides(1).Shapes(2).Table Dim i As Long
For i = 1 To tbl.Rows(1).Cells.Count
tbl.Cell(1, i).Shape.TextFrame _
.TextRange.ParagraphFormat.Alignment _
= ppAlignCenter
Next
End Sub
カウンター変数iが、1から1行目のセルの個数になるまでFor~Next文を回して、
For i = 1 To tbl.Rows(1).Cells.Count
1行目のセルを表すCellオブジェクトを、Table.Cellメソッドで取得しています。
tbl.Cell(1, i).Shape.TextFrame _
最終更新日時:2019-07-24 12:34
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » PowerPoint VBAで表の1行目文字列を中央揃えに