【Excel VBA】【コピペでOK】テキストボックス内の文字列を置換するマクロ【フォント設定そのまま】

Excel

Excelの置換機能ではテキストボックス内の置換が出来ないので、マクロを作成しました。
単純に置換するとフォントの設定が消えてしまうので、一工夫してあります。

このマクロを使うにはどうしたらいいか、分からない方は下記の記事を参考にして下さい!

マクロ機能説明

  • シート内の全テキストオブジェクトにある置換対象文字を置換後文字に置き換えます。
  • 置換対象文字と置換後文字は入力ダイアログで指定できます。
  • テキストオブジェクトのフォント設定は、保持されます。
Sub テキストボックス置換()

    Dim searchWord, changeWord As String
    searchWord = InputBox("検索文字")
    If searchWord = "" Then
        MsgBox "検索文字を指定して下さい"
        Exit Sub
    End If
    
    changeWord = InputBox("検索文字:" & searchWord & vbCr & "置換文字")
    
    Dim shp As Shape
    ' シート内の図形オブジェクトに対して処理を実施
    For Each shp In ActiveSheet.Shapes
        
        'テキストがないオブジェクト対策
        On Error Resume Next
        
        With shp.TextFrame
            '1オブジェクト内に複数の置換対象がある場合を考慮
            Do While (1)
                sIdx = InStr(.Characters.Text, searchWord)
                If sIdx = 0 Then
                    Exit Do
                Else
                    ' 置換対象の文字のみ置き換える
                    .Characters(sIdx, Len(searchWord)).Text = changeWord
                End If
            Loop
        End With
    Next
End Sub

実行例

下のサンプルシートにマクロを実行してみます。


マクロを呼び出します。


検索文字と置換文字を指定します。


「AAAA」が「ああああ」が置換されています。フォントの設定も消えていません。

コメント

タイトルとURLをコピーしました