Excel VBA 吹き出しの文字を置換するサンプル

Excel VBAの吹き出しの文字を置換するサンプルです。

目次

サンプル 吹き出しの文字を置換する
  ループで複数の吹き出しの文字を置換する
  吹き出しの文字の一部を置換する(Replace)

吹き出しの文字を置換する

上記のエクセルの吹き出しの文字を置換します。

コード

Sub Test1()

    Sheets("Sheet1").Select
    ActiveSheet.Shapes(1).TextFrame.Characters.Text = "こんばんは123456789123456789"
    ActiveSheet.Shapes(1).TextFrame.AutoSize = True
    
End Sub

4行目で文字列を置換します。1つめの吹き出しは、Shapes(1)です。
5行目は、AutoSizeがTrueです。以下のように文字列が入るように吹き出しの幅が広がります。

 

5行目のAutoSizeをFalseにした場合は、以下のように吹き出しの幅は変わらず文字の見え方は途切れます。

 

ループで複数の吹き出しの文字を置換する

上記のエクセルの3つの吹き出しの文字を置換します。

コード

Sub Test1()
    Dim i As Integer
    Sheets("Sheet1").Select

    With ActiveSheet
        For i = 1 To .Shapes.Count
            With .Shapes(i).TextFrame
                .Characters.Text = "Hello"
                .AutoSize = True
            End With
        Next
    End With
End Sub

6行目は、for文でループさせます。1つめの吹き出しは、Shapes(1)から始まるので開始値は1です。

実行結果は、以下のようになります。

 

吹き出しの文字の一部を置換する(Replace)

上記のエクセルの吹き出しのHelloの文字のみを置換します。

コード

Sub Test1()
    Dim str1 As String
    Sheets("Sheet1").Select
    str1 = ActiveSheet.Shapes(1).TextFrame.Characters.Text
    
    ActiveSheet.Shapes(1).TextFrame.Characters.Text = Replace(str1, "Hello", "おはよう")
    ActiveSheet.Shapes(1).TextFrame.AutoSize = True
    
End Sub

4行目は、吹き出しの全ての文字列を取得しています。
6行目は、Repalceで全ての文字列に対してHelloの箇所をおはように置換しています。

実行結果は、以下のようになります。

参考:
https://docs.microsoft.com/ja-jp/office/vba/api/excel.shape

関連の記事

Excel VBA ファイルとシート操作のサンプル

△上に戻る