【1行マクロ】文書中で文字列を選択しているかどうか調べる | みんなのワードマクロ

みんなのワードマクロ

ワードマクロで、文書作成とオフィス事務を効率化!!

----------------------------------------
この記事を新しいサイトに転記しました
----------------------------------------

先日紹介した「『○○において』 → 『in the ○○』の置換マクロ 」という記事がありまして、その中でマクロを紹介しました。


そのマクロの冒頭で、文中で文字列を選択していない場合には、プログラムを終了するように記載しました。


If Selection.Text = vbNullString Then End

間違いで失礼いたしました。


意図していたのは、「選択範囲の文字が「何もない」であるのならば終了する」だったのですが、失敗。


実は、Selection.Text で、何も選択されていない場合には、カーソルの右側の1文字が代わりにに選択されてしまいます


見た目には選択されていません!!でも、マクロを実行しているときには、選択されたことになっています。


よって、上記の書き方だと、見た目で文字列が選択されていない場合でも、プログラムを終了することができません。


誤作動を起こしてしまいますね。みなさん、気をつけましょう(笑)。


で、その教訓を生かして、以下のように修正します。


【1行マクロ】

If Selection.Start = Selection.End Then End


【日本語訳】

もし、選択範囲の文字の開始位置 = 選択範囲の文字の終了位置 ならば 終了


つまり、何も選択されていない状態であれば、上記の関係が成り立つわけです。


【応用編】

If Selection.Start <> Selection.End Then MsgBox "文字列が選択されています。"


【日本語訳】

もし、選択範囲の文字の開始位置 が 選択範囲の文字の終了位置 とは違うのならば ”文字列が選択されています。”と表示


<> 」は、「違う」を意味します。


数値を比較することも、文字を比較することもできます。



▼関連記事

「○○において」 → 「in the ○○」の置換マクロ

【1行マクロ】文書中で文字列を選択しているかどうか調べる

「○○において」 → 「in the ○○」の置換マクロ (2)