オートシェイプ内のテキストを置換するマクロ

作ってみた。
テストは全然してないけど、現在作成中のドキュメントでは、
うまく動いたので自分的にはこれでオーケーです。

'mdlShapes.bas
Option Explicit

Public SearchWord As String
Public ReplaceWord As String

Public Sub ReplaceShapeText()

    Dim sh As Object    '対象シート
    Dim s As Shape      '対象オートシェイプ
    Dim t As String     '対象テキスト
    
    Call frmReplace.Show
    
    Set sh = Application.ActiveSheet
    
    On Error Resume Next
    
    For Each s In sh.Shapes
    
        t = s.TextFrame.Characters.Text

        If Err Then
            Call Err.Clear
        Else
            s.TextFrame.Characters.Text = Replace$(t, SearchWord, ReplaceWord)
        End If
        
    Next s

    Set sh = Nothing

End Sub
'frmReplace.frm
Option Explicit

Private Sub cmdAllReplace_Click()

    SearchWord = Me.txtSearch.Text
    ReplaceWord = Me.txtReplace.Text

    Call Unload(Me)

End Sub

で、frmReplace.frm のデザインは下のような感じです。

検索機能も作ろうと思ったけど、めんどくさいのでやめました。


置換の対象となるものは、選択しているシートのオートシェイプすべてです。
本当は、選択しているオートシェイプだけを対象にしたかったけど
どうすればいいか判らなかったです。。。