Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » PowerPoint VBAで表の1行目文字列を中央揃えに

PowerPoint VBAで表の1行目文字列を中央揃えに

動作検証バージョン:Windows版PowerPoint(バージョン1906 ビルド11727.20244)

表内の文字列をすべて中央揃えにするPowerPointマクロをご紹介しています。

実務上は、表の1行目だけを中央揃えにしたいというケースのほうが多いでしょう。

この場合、1行目の各セルに対してFor Each~Nextループを回すほうが、比較的シンプルなコードで済みます。

[スポンサードリンク]

表の1行目文字列を中央揃えにするサンプルマクロ

以下のSubプロシージャを実行すると、アクティブプレゼンテーション先頭スライドの、2つ目のShape内に存在する表の、1行目の文字列が中央揃えになります。

Sub 表の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文を使う場合は以下のとおりです。

Sub 表の1行目の文字列を中央揃えにする_For文()
 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行目文字列を中央揃えに

「表・テーブル」の記事一覧

検索


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

.