「word vba 表の最終行を選択」
といった検索キーワードでアクセスがありました。
表の最終行を選択するサンプル
以下のSubプロシージャを実行すると、アクティブ文書内の、1つ目の表の最終行が選択されます。
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です。
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で選択する