「word vba selection 選択されていない場合 exit」
「word vba "何も選択されていない" 終了」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Word上で何も選択されていない場合にはプロシージャを終了するVBA(Visual Basic for Applications)のコードをどう書けばいいのかを探している方による検索です。
「何も選択されていない場合」というのが、本当のところ、どういう状態を意味しているのかによって、求められているコードは変わってきます。
ここでは「何も選択されていない場合」というキーワードから考えられる2つのマクロをご紹介しておきます。
SelectionオブジェクトのTypeプロパティを使ったサンプルマクロ
まずは「何も選択されていない場合」というキーワードを、杓子定規に解釈したマクロです。
If Selection.Type = wdNoSelection Then Exit Sub
MsgBox "何かが選択されています。"
End SubWord上で選択されているものを表すSelectionオブジェクトにTypeプロパティが存在しています。
Selection.Typeプロパティは、選択されているものに応じて、WdSelectionType列挙に定義されている以下のような値を返してきます。
この中のwdNoSelectionが何も選択されていない状態を表します。
このことを利用して、SelectionオブジェクトのTypeプロパティがwdNoSelectionのときにSubプロシージャを終了して、
If Selection.Type = wdNoSelection Then Exit Sub
そうではなかったときにメッセージを表示しています。
MsgBox "何かが選択されています。"
本文中で1文字も選択されていないかどうかを判定するサンプルマクロ
「何も選択されていない場合」というキーワードをそのまま解釈したマクロをご紹介しましたが、「1文字も選択されていない場合」という条件を意味している可能性のほうが高いのではないかと考えています。
その場合、以下のようなマクロが参考になるでしょう。
With Selection
If .Start = .End Then Exit Sub
MsgBox .Text
End With
上記のマクロを実行すると1文字も選択されていない場合にはSubプロシージャを終了し、そうでない場合は選択されている文字列がメッセージボックスに表示されます。
Selectionオブジェクトの
Startプロパティが選択範囲の文字の開始位置
Endプロパティが選択範囲の文字の終了位置
をそれぞれ表しています。
このSelection.StartとSelection.Endが同じ場合が1文字も選択されていない状態ですから、上記のマクロでは、
With Selection
If .Start = .End Then Exit Sub
としてSubプロシージャからExitしています。
Home » ワードマクロ・Word VBAの使い方 » Selection » 何も選択されていない場合にExitするWord VBAのコード