キーワードをテレコにしたいときに

文を書き進めていくと、2つのキーワードをテレコにしたいときがあります。

例えば「第1部材」を書いた後、説明の順番で どうしても「第1部材」の前に「第2部材」を書き入れたくなることがあります。そのまま書き入れると、「第1部材」の前に唐突に「第2部材」が登場してしまいます。

Sub さかさまなり()
Dim UD As Word.UndoRecord
Call 記録開始(UD)
On Error GoTo er:
Dim rng As Range
Dim TXT1 As String, TXT2 As String
Dim tmp As String
Dim 選択色 As Long

選択色 = RGB(255, 102, 0)   '選択時の色をセット

Set rng = Selection.Range
If rng.Start = rng.End Then GoTo er:


TXT1 = Selection.Text
TXT2 = GetSetting("マーク", "Change", "Word", "##")

If TXT2 = "##" Or TXT2 = "" Then
    Call 置き換えC(TXT1, TXT1, 選択色)
    SaveSetting "マーク", "Change", "Word", TXT1
Else
    If TXT2 <> "" And TXT2 <> Chr(13) Then
            tmp = "@@@@@■@@@@@"
            Call 置き換えC(TXT1, tmp, 選択色)
            Call 置き換えC(TXT2, TXT1, 選択色)
            Call 置き換えC(tmp, TXT2, 選択色)
            rng.Select
    End If
    SaveSetting "マーク", "Change", "Word", ""
End If

Selection.Collapse Direction:=wdCollapseEnd
Set rng = Nothing
Call 記録終了(UD)
Set UD = Nothing
Exit Sub

er:
    Set rng = Nothing
    SaveSetting "マーク", "Change", "Word", ""
    Call 記録終了(UD)
    Set UD = Nothing
End Sub

Sub 置き換えC(ByRef 置換前 As String, ByRef 置換後 As String, 置換色 As Long)
With ActiveDocument.Range(0, 0).Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = 置換前
    .Replacement.Text = 置換後
    .Replacement.Font.Color = 置換色
    .Format = True
    .Forward = True
    .Wrap = wdFindContinue
    .MatchWildcards = False
    .MatchFuzzy = True
    .Execute Replace:=wdReplaceAll
    
    .Format = False
    .Font.Color = False
    .Replacement.Font.Color = False
    .Text = ""
    .Replacement.Text = ""
    .MatchFuzzy = False
End With
End Sub

Sub 記録開始(ByRef UD As Word.UndoRecord)
If Not UD Is Nothing Then Exit Sub
Set UD = Application.UndoRecord
If UD.IsRecordingCustomRecord = False Then UD.StartCustomRecord "さかさまなり"
End Sub
Sub 記録終了(ByRef UD As Word.UndoRecord)
If UD Is Nothing Then Exit Sub
If UD.IsRecordingCustomRecord = True Then UD.EndCustomRecord
End Sub

例えば、次のような文において、「なつ」と「あつ」をさかさまにしたいとき、一旦「あつ」を選択した状態でこのマクロを実行します。

すると、↓のように、「あつ」の色が変化し、「あつ」が レジストリに格納されます。

次に、入替え対象となる「なつ」を選択した状態で再度マクロ「さかさまなり」 を実行します。

すると、レジストリから「あつ」が読み込まれ、↓のように、「あつ」と「なつ」が入れ替わります。