Wordマクロセミナーにお越しいただいた方からの要望で作成しました。
ある文書に書かれている全角数字を、別の文書で半角数字にして使う場合にこのマクロが必要とのことです。
いろいろ応用がきくと思いますので掲載します。
▼このマクロでできること
クリップボードに文字列がある場合に使います。
マクロを実行すると、クリップボード内の文字列が半角になって貼り付けられます。
全角のカタカナやアルファベットがクリップボードに保存されているときにご利用ください。
▼マクロの解説
マクロを実行すると、以下の操作をします。
クリップボード内の文字列をデフォルトの形式で貼り付けます。
つまり、[Ctrl] + [V] を実行する場合や、[貼り付け] のボタンをクリックした場合と同じ動作です。
青文字部分です。
貼り付けた文字列を半角に変換します。
赤文字部分です。
この赤文字部分を実行するために、準備をしています。
それが、紫色の部分です。
カーソルが置かれている部分(つまり、文字列を貼り付ける部分)の先頭の位置をSSという変数に代入します。
そして、貼り付けた後に、カーソル位置が貼り付けた文字列の末尾の位置に移動したときに、先頭位置をSSで呼び出して文字列を選択し直し(SetRangeメソッド)ます。
こうすれば、貼り付けた文字を選択できますから、赤文字の処理対処を設定できますね。
VBEで [F8] を使って1ステップずつご確認ください。
同じマクロですが、いくつか書き直してみました。
Withステートメントを使ったものが、マクロ2です。
オブジェクト変数のmyRangeを定義したものが、マクロ3です。
▼マクロ1
Sub 貼り付け時に半角1()
Dim SS As Long
SS = Selection.Start
Selection.PasteAndFormat (wdPasteDefault)
Selection.SetRange Start:=SS, End:=Selection.End
Selection.Range.CharacterWidth = wdWidthHalfWidth
Selection.Collapse Direction:=wdCollapseEnd
End Sub
▼マクロ2
Sub 貼り付け時に半角2()
Dim SS As Long
With Selection
SS = .Start
.PasteAndFormat (wdPasteDefault)
.SetRange Start:=SS, End:=Selection.End
.Range.CharacterWidth = wdWidthHalfWidth
.Collapse Direction:=wdCollapseEnd
End With
End Sub
▼マクロ3
Sub 貼り付け時に半角3()
Dim myRange As Range
Dim SS As Long
Set myRange = Selection.Range
SS = myRange.Start
Selection.PasteAndFormat (wdPasteDefault)
myRange.SetRange Start:=SS, End:=Selection.End
myRange.CharacterWidth = wdWidthHalfWidth
Set myRange = Nothing
End Sub
▼関連記事
貼り付け時に最初の1文字を小文字にするマクロ
Wordマクロセミナーのご案内