「wordvba 表 列選択」
という検索が、このサイト・インストラクターのネタ帳で行われていました。
表の列を選択するWord VBA(Visual Basic for Applications)のコードを探している方による検索です。
どの表の、どの列を選択したいのかがわかりませんので、参考になりそうな簡単なマクロを二つご紹介しておきます。
カーソルの置かれている表の1列目を選択するサンプルマクロ
表の中にカーソルがあるときに以下のマクロを実行すると、その表の1列目を選択できます。
On Error GoTo ErrHndl
Selection.Tables(1).Columns(1).Select
Exit Sub
ErrHndl:Err.Clear
End Sub
SelectionオブジェクトのTablesプロパティでTablesコレクションオブジェクトを取得して、
Tablesコレクションオブジェクトの既定メンバーであるItemメソッドの引数に「1」を指定することで、1つ目の表を表すTableオブジェクトを取得して、
TableオブジェクトのColumnsプロパティで、表内のすべての列を表すColumnsコレクションオブジェクトを取得して、
Columnsコレクションオブジェクトの既定メンバーであるItemメソッドに「1」を指定することで、表の1列目を表すColumnオブジェクトを取得して、
ColumnオブジェクトのSelectメソッドで選択を行っています。
表の中にカーソルがないときに実行すると実行時エラーが発生するので、
On Error GoTo ErrHndl
ErrHndl:
Err.Clear
としています。
Columnsの後ろの数字を変更して、例えば、
Selection.Tables(1).Columns(2).Select
とすれば、2列目を選択できます。
アクティブページの1つ目の表の1列目を選択するサンプルマクロ
以下のようなマクロにすれば、アクティブなページの1つ目の表の1列目を選択できます。
On Error GoTo ErrHndl
ActiveDocument.Bookmarks("\Page").Range _
.Tables(1).Columns(1).Select
Exit Sub
ErrHndl:Err.Clear
End Sub
先のマクロのコード、
Selection.Tables(1).Columns(1).Select
の部分で「Selection」になっていたのが、
ActiveDocument.Bookmarks("\Page").Range _
.Tables(1).Columns(1).Select
と「ActiveDocument.Bookmarks("\Page").Range」になっているだけの違いです。
Excelマクロユーザーが注意すべき点
ちなみに、Excelマクロに慣れた方だと、Columnsという名前のプロパティに馴染みがあるかもしれません。
ですが、ここでご紹介しているのはあくまでもWordマクロですから、同じ「Columns」という名前のプロパティであっても、まったく別ものです。
Excelで、ワークシートを列単位で操作するときなどにお世話になるColumnsプロパティは、下図のとおりRangeオブジェクトを返すプロパティです。
この記事でご紹介しているWordのColumnsプロパティは、Columnオブジェクトをメンバーとして持つColumnsコレクションオブジェクトを返してくるプロパティです。
ExcelマクロのColumnsプロパティに慣れている方が、この記事のWordマクロを理解するときは、この違いをしっかりと理解しておくことも大切なポイントでしょう。
最終更新日時:2020-01-06 19:43
Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 表の列を選択するWordマクロ