「powerpoint vba テーブル 最終行 取得」
という検索キーワードでアクセスがありました。
表の最終行を表すRowオブジェクトを取得する
アクティブなプレゼンテーションの、先頭スライド2つ目のShapeに表が存在するときに、以下のようなコードで最終行を表すRowオブジェクトを取得できます。
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がつけてしまったのか、疑問に感じています。
- Newer:Collectionの中身を確認する
- Older:10から19を10、20から29を20のようにするには?
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » PowerPoint VBAで表の最終行を取得する