Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表の最終行をWord VBAで選択する

表の最終行をWord VBAで選択する

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

「word vba 表の最終行を選択」
といった検索キーワードでアクセスがありました。

表の最終行を選択するサンプル

以下のSubプロシージャを実行すると、アクティブ文書内の、1つ目の表の最終行が選択されます。

Sub 表の最終行を選択する()
 With ActiveDocument.Tables
  If .Count = 0 Then
   MsgBox "アクティブ文書には表が存在しません。"
   Exit Sub
  Else
   .Item(1).Rows.Last.Select
  End If
 End With
End Sub

サンプルで行っている処理について

Word VBAで最終行の取得・選択は簡単

拙著『Excel VBAユーザーのためのWord VBA入門(2):Tableの基本編』の、「13-4. Rowsの特徴的なプロパティ・メソッド」でもお伝えしているとおり、RowsコレクションのLastプロパティを使うと、

With ActiveDocument.Tables
  .Item(1).Rows.Last.Select

表の最終行を表すRowオブジェクトを取得できます。

Rows.Lastプロパティで取得したRowオブジェクトのSelectメソッドを使えば、

With ActiveDocument.Tables
  .Item(1).Rows.Last.Select

表の最終行を取得できます。

問題は、最終行を取得したい表がどの表なのか、です。

文書内の1つ目の表を取得する

検索キーワード「word vba 表の最終行を選択」だけでは、どの表の最終行を選択したいのかがわかりませんから、上記のSubプロシージャでは文書の1つ目の表としています。

拙著「9-2. TablesからTableを取得する」でも解説しているとおり

ActiveDocument.Tables.Item(1)

あるいは、

ActiveDocument.Tables(1)

で、アクティブ文書内の、1つ目の表を表すTableオブジェクトを取得できます。

実行時エラー回避のために

ですから、

ActiveDocument.Tables(1).Rows.Last.Select

といったコードで、アクティブ文書内の、1つ目の表の最終行を選択できます。

しかし「ActiveDocument.Tables(1).Rows.Last.Select」だけでは、表が存在しないときに実行時エラーが発生するため、上記のSubプロシージャでは、

With ActiveDocument.Tables
 If .Count = 0 Then
  MsgBox "アクティブ文書には表が存在しません。"
  Exit Sub

という、文書内に表が存在するかどうか判定する処理を入れています。

選択されている表の最終行を選択する

気になるのは、どういったシーンで「word vba 表の最終行を選択」という要望が出るか、です。

私が思いつくのは、複数ページに及ぶような表を扱っているときです。巨大な表をWordで作成しているときに、カーソルの置かれている表の最終行を選択したい、という要望はありそうに思えます。

であれば、先ほどの、

With ActiveDocument.Tables

を、拙著「11-1. 選択されている表の取得」で解説している、SelectionオブジェクトのTablesプロパティを使った、

With Selection.Tables

にしてやれば、OKです。

Sub カーソルのある表の最終行を選択する()
 With Selection.Tables
  If .Count = 0 Then
   MsgBox "カーソルを表内に置いた状態で実行してください。"
   Exit Sub
  Else
   .Item(1).Rows.Last.Select
  End If
 End With
End Sub

最終更新日時:2022-07-27 11:27

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表の最終行をWord VBAで選択する

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

検索


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

.