Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » PowerPoint VBAで表の最終行を取得する

PowerPoint VBAで表の最終行を取得する

動作検証バージョン:64bit Windows 10 Pro + 32bit PowerPoint(バージョン2008 ビルド13127.20408 Microsoft Store)

「powerpoint vba テーブル 最終行 取得」
という検索キーワードでアクセスがありました。

[スポンサードリンク]

表の最終行を表すRowオブジェクトを取得する

アクティブなプレゼンテーションの、先頭スライド2つ目のShapeに表が存在するときに、以下のようなコードで最終行を表すRowオブジェクトを取得できます。

Sub 表の最終行を取得する()
 Dim last_row As Row
 With ActivePresentation.Slides(1).Shapes(2).Table.Rows
  Set last_row = .Item(.Count)
 End With
End Sub

拙著『いちばんやさしいPowerPoint VBAの教本』で繰り返し行っているように、ローカルウィンドウを表示した状態でステップ実行すると、変数last_rowに最終行を表すRowオブジェクトを取得する様子が、下図のとおり観察できます。

Rowsコレクションから単独のRowオブジェクトを取得するItemメソッドの引数に、
  With ActivePresentation.Slides(1).Shapes(2).Table.Rows
   Set last_row = .Item(.Count)

行数を表すRows.Countを指定することで、
   Set last_row = .Item(.Count)

最後の行・最終行を表すRowオブジェクトを取得しています。

Table.LastRowの戻り値はBoolean

実はPowerPoint VBAのTableオブジェクトには、「LastRow」という名前のプロパティが用意されています。

「powerpoint vba テーブル 最終行 取得」
と検索なさった方は、このTable.LastRowプロパティをご存知だったのかもしれません。TableオブジェクトのLastRowプロパティですから、表の最終行を表すRowオブジェクトを返してくれると考えるのは、無理もないと私は感じます。

しかし残念ながら、Table.LastRowプロパティの戻り値はRowオブジェクトではありません。Booleanです。

PowerPointで表がアクティブになると自動的に表示される[テーブルデザイン]タブの[表スタイルのオプション]グループに、下図のような[集計行]チェックボックスが存在します。

この[集計行]チェックボックスが、OnかOffかを調べられるのが、Table.LastRowプロパティです。

Word VBAではApplyStyleLastRow

PowerPoint VBAのTable.LastRowは、良くない名前付けの見本と言ってしまってもイイと私は考えています。

Word VBAでも、[テーブルデザイン]タブの[表スタイルのオプション]グループ-[集計行]チェックボックスと連動したプロパティが、

Tableオブジェクトに用意されています。こちらの名前は「ApplyStyleLastRow」です。

Table.ApplyStyleLastRowプロパティならば、行を表すRowオブジェクトを返すという誤解は生じません。

Word VBAではApplyStyleLastRowと適切な名前が付けられているのに、PowerPoint VBAではLastRowという、Rowオブジェクトを返しそうな名前を何故Microsoftがつけてしまったのか、疑問に感じています。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » PowerPoint VBAで表の最終行を取得する

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

検索


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

.