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
関連の記事