キーワードをテレコにしたいときに
文を書き進めていくと、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
例えば、次のような文において、「なつ」と「あつ」をさかさまにしたいとき、一旦「あつ」を選択した状態でこのマクロを実行します。
すると、↓のように、「あつ」の色が変化し、「あつ」が レジストリに格納されます。
次に、入替え対象となる「なつ」を選択した状態で再度マクロ「さかさまなり」 を実行します。
すると、レジストリから「あつ」が読み込まれ、↓のように、「あつ」と「なつ」が入れ替わります。