Word で書いた文章の中で選択した文字列の1文字1文字の間に空白(スペース)を入れたい場合があると思います。
例えば、「貸借対照表」という文字列を「貸 借 対 照 表」というように表示を変えたい場合。
文字列が短ければ1文字ずつスペースを入れても良いのですが長いと面倒です。
選択した文字列1文字1文字の間に空白(スペース)を入れるマクロ(VBA)を考えましたので、紹介したいと思います。

1、選択した文字列1文字1文字の間に空白(スペース)を入れるマクロ(VBA)
プログラミングコード
文字列を選択した状態で標準モジュールに記述した次のマクロ(VBA)を実行します。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  | 
						Sub Select_Range_Space()     Dim S_Range     Dim S_Range_New     Dim Moji     S_Range = Selection.Range     S_Range_New = ""     For i = Len(S_Range) To 1 Step -1         Moji = Mid(S_Range, i, 1)         If i <> 1 Then             S_Range_New = " " & Moji & S_Range_New         Else             S_Range_New = Moji & S_Range_New         End If     Next i     Selection.Range = S_Range_New End Sub  | 
					
動作確認
例えば、次のようにある程度長い文字列を選択して上記マクロ(Word VBA)を実行しても、正常に動作することが確認できます。
文字列の選択時↓

マクロ実行後↓

2、コード説明
さて、プログラミングコードを説明したいと思います。
変数の定義
| 
					 1 2 3  | 
						    Dim S_Range     Dim S_Range_New     Dim Moji  | 
					
・「S_Range」は選択した文字列を格納するための変数
・「S_Range_New」は間にスペースを入れた文字列を格納するための変数
・「Moji」は選択した文字列の1文字1文字を格納するための変数
変数への代入
| 
					 1 2  | 
						    S_Range = Selection.Range     S_Range_New = ""  | 
					
文字列の間に空白(スペース)を入れる
| 
					 1 2 3 4 5 6 7 8 9 10 11  | 
						    For i = Len(S_Range) To 1 Step -1         Moji = Mid(S_Range, i, 1)         If i <> 1 Then             S_Range_New = " " & Moji & S_Range_New         Else             S_Range_New = Moji & S_Range_New         End If     Next i  | 
					
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」に置き換える
| 
					 1  | 
						    Selection.Range = S_Range_New  | 
					
「貸借対照表」という文字列を選択した場合、それが「貸 借 対 照 表」と置き換わります。
3、まとめ
選択した文字列1文字1文字の間に空白(スペース)を入れるマクロ(Word VBA)を紹介しました。
文字の間隔を調整することもできるので、そちらの機能を使えば良いのかもしれませんが、見栄えなどの関係上サクッと空白(スペース)を入れたい場合もあるかもしれません。
使えそうなケースで使って頂きたいと思います。
