検索キーワード「Selection.MoveEndUntil Cset 段落を選択 word マクロ」をきっかけに、
Selection.Paragraphs(1).Range.Select
というWord VBAのコードで、カーソルのある段落を選択できることをご紹介しました。
この「Selection.Paragraphs(1).Range.Select」では、希望どおりの挙動とならない場合もあるかもしれません。
たとえば、
上図のように複数の段落にまたがって選択されているときに、下図のような状態になることを期待して、
「Selection.Paragraphs(1).Range.Select」を実行した場合、下図のように1つ目の段落のみが選択されてしまいます。
選択範囲を段落に拡張するサンプルマクロ
複数の段落にまたがって選択されているときに、選択範囲を段落に拡張したいのであれば、以下のようなWordマクロです。
Selection.MoveStart wdParagraph, -1
Selection.MoveEnd wdParagraph, 1
End Sub
拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』の、「7-6. カーソル位置や選択範囲を変更するメソッド」で解説しているMove〇〇系メソッドを使ったマクロです。
サンプルマクロで行っている処理
上記のサンプルマクロでは、以下のような処理を行っています。
「Selection.MoveStart wdParagraph, -1」の処理内容
まず、選択範囲を表すSelectionオブジェクトのMoveStartメソッドの
第1引数にWdUnits列挙型に定義されている定数wdParagraphを、
第2引数に「-1」をそれぞれ指定することで、選択範囲の先頭が段落の先頭に移動します。
下図のように選択されているときに、
Selection.MoveStart wdParagraph, -1
を実行すると、下図のような状態になるわけです。
「Selection.MoveEnd wdParagraph, 1」の処理内容
つづいて、SelectionオブジェクトのMoveEndメソッドの
第1引数に同じく定数wdParagraphを指定し、第2引数に「1」を指定すると、選択範囲の末尾が段落の最後に移動します。
先ほどのつづきで
Selection.MoveEnd wdParagraph, 1
を実行すると、下図のような状態になるわけです。
最終更新日時:2022-10-07 16:47
Home » ワードマクロ・Word VBAの使い方 » Selection » Word VBAで選択範囲を段落に拡張する