上書き翻訳での文字列の選択に便利なマクロです。
文字列を移動するときに、全角文字を移動/削除したり、半角文字を移動/削除したりすることがよくあります。
そのときに使えます。
▼このマクロでできること
全角文字や半角文字に選択範囲を拡大します。
▼マクロの解説
選択範囲の先頭文字の1文字先の文字(.Characters.First.Previous)と選択範囲の末尾文字の1文字後の文字(.Characters.Last.Next)を判定して選択範囲を拡大させます。
文字の種類の判定にはLike演算子
を使いました。
ちなみに、このFirst, Previous, Last, Next は文字列以外にも単語や段落などのオブジェクトでも使えますから、選択範囲の前後のオブジェクトを選択するときに便利です。
全角と半角の判定は簡易のものです。
これを工夫するともう少し精度が高くなります。
全角:半角のアルファベットと半角の数字と半角スペース以外のもの
半角:半角のアルファベットと半角の数字と半角スペース
です。
今の翻訳の仕事で使っていますが、だいたい大丈夫です。
▼マクロ
Sub 選択範囲の拡大_全角()
Dim myRange As Range
Set myRange = Selection.Range
'先頭を拡張
Do While Not myRange.Characters.First.Previous Like "[a-zA-Z0-9 ]"
myRange.Start = myRange.Start - 1
Loop
'末尾を拡張
Do While Not myRange.Characters.Last.Next Like "[a-zA-Z0-9 ]"
myRange.End = myRange.End + 1
Loop
'Rangeオブジェクトを選択
myRange.Select
'Rangeオブジェクトを解放
Set myRange = Nothing
End Sub
Sub 選択範囲の拡大_半角()
Dim myRange As Range
Set myRange = Selection.Range
'先頭を拡張
Do While myRange.Characters.First.Previous Like "[a-zA-Z0-9 ]"
myRange.Start = myRange.Start - 1
Loop
'末尾を拡張
Do While myRange.Characters.Last.Next Like "[a-zA-Z0-9 ]"
myRange.End = myRange.End + 1
Loop
'Rangeオブジェクトを選択
myRange.Select
'Rangeオブジェクトを解放
Set myRange = Nothing
End Sub
▼関連記事
Like演算子
カーソル移動に関するマクロ
カーソルの移動
選択範囲の変更
カーソル位置の文字の先頭文字の大・小文字の切り替え
カーソル位置の文頭文字の大・小文字の切り替え
単語の先頭1文字の大文字/小文字を切り替え
英日翻訳において半角スペースを削除するマクロ
文字列を横方向に移動
上書き翻訳のツール
ぱらぱら(一括置換支援のWordアドイン)
山猫の手([検索と置換]ダイアログボックスの強化版)