スポンサーリンク

Word で選択した文字列1文字1文字の間に空白(スペース)を入れるマクロ(Word VBA)


Word で書いた文章の中で選択した文字列の1文字1文字の間に空白(スペース)を入れたい場合があると思います。

例えば、「貸借対照表」という文字列を「貸 借 対 照 表」というように表示を変えたい場合。

文字列が短ければ1文字ずつスペースを入れても良いのですが長いと面倒です。

選択した文字列1文字1文字の間に空白(スペース)を入れるマクロ(VBA)を考えましたので、紹介したいと思います。

スポンサーリンク

1、選択した文字列1文字1文字の間に空白(スペース)を入れるマクロ(VBA)

プログラミングコード

文字列を選択した状態で標準モジュールに記述した次のマクロ(VBA)を実行します。

動作確認

例えば、次のようにある程度長い文字列を選択して上記マクロ(Word VBA)を実行しても、正常に動作することが確認できます。

文字列の選択時↓

マクロ実行後↓

2、コード説明

さて、プログラミングコードを説明したいと思います。

変数の定義

各々の変数は以下のような役割になっています。

・「S_Range」は選択した文字列を格納するための変数
・「S_Range_New」は間にスペースを入れた文字列を格納するための変数
・「Moji」は選択した文字列の1文字1文字を格納するための変数

変数への代入

「S_Range」に選択した文字列を格納しています。また、「S_Range_New」には初期値として””(空白)を入れ込んでいます。

文字列の間に空白(スペース)を入れる

1行目の
For i = Len(S_Range) To 1 Step -1

この部分↑で、i の値を「選択した文字列の長さ」から「1」まで1ずつ下げていくことを意味しています。

Len(S_Range)は変数「S_Range」の長さを意味します。
つまり、選択した文字列の長さを表しているということですね。

例えば選択した文字列が「貸借対照表」の5文字であれば、i を5から1まで1つずつ下げていくことになりますね。

3行目の
Moji = Mid(S_Range, i, 1)

この部分↑で、選択した文字列の左からi番目の文字を変数「Moji」に入れ込んでいます。

例えば文字列が「貸借対照表」の場合において、iが3であれば左から3文字目の「対」が変数「Moji」に入ります。

5~9行目の

If i <> 1 Then
     S_Range_New = “ ” & Moji & S_Range_New
Else
     S_Range_New = Moji & S_Range_New
End If

この部分↑では、iが変化する中でiが1でない場合(左から1文字目でない場合)は、変数「Moji」の前に” ”(空白)を付けて変数「S_Range_New」に加えています。

また、i が1の場合は” ”(空白)を付けずに変数「Moj」を変数「S_Range_New」に加えています。
つまり選択した文字列の左から1文字目の前には空白を入れないということですね。

「貸借対照表」という文字列を選択した場合、iは最初は5からはじまり、1になるまで1つずつ下がって行きます。

i = 5 のとき
「S_Range_New」は「 表」となります。

i = 4 のとき
「S_Range_New」は「 照」に「 表」が足されて「 照 表」となります。

i = 3 のとき
「S_Range_New」は「 対」に「 照 表」が足されて「 対 照 表」となります。

i = 2 のとき
「S_Range_New」は「 借」に「 対 照 表」が足されて「 借 対 照 表」となります。

i = 1 のとき
「S_Range_New」は「貸」に「 借 対 照 表」が足されて「貸 借 対 照 表」となります。

選択した文字列を「S_Range_New」に置き換える

この部分↑では、選択した文字列を変数「S_Range_New」に置き換えています。

「貸借対照表」という文字列を選択した場合、それが「貸 借 対 照 表」と置き換わります。

3、まとめ

選択した文字列1文字1文字の間に空白(スペース)を入れるマクロ(Word VBA)を紹介しました。

文字の間隔を調整することもできるので、そちらの機能を使えば良いのかもしれませんが、見栄えなどの関係上サクッと空白(スペース)を入れたい場合もあるかもしれません。

使えそうなケースで使って頂きたいと思います。