【VBA】図形にテキストを入れる方法(オートシェイプ)
今回は、Excelの図形にテキストを入れる方法を紹介します。
図形のテキストは、図形オブジェクト(Shape)のかなり下のほうのオブジェクトを操作する必要があります。(TextFrame2と言うオブジェクトです)
簡単なサンプルコードをお見せしますので、コピペして使ってみてください。
図形にテキストを入れる方法(オートシェイプ)
Sub AddTextToShape()
Dim ws As Worksheet
Dim shp As Shape
' アクティブシートを設定
Set ws = ActiveSheet
' シート上の最初の図形を取得
Set shp = ws.Shapes(1)
' 図形にテキストを追加
shp.TextFrame2.TextRange.Characters.Text = "テキスト"
End Sub
サンプルコードを実行すると、シート上の最初に作った図形にテキストを追加します。
' シート上の最初の図形を取得
Set shp = ws.Shapes(1)
テキストを追加する図形は、この部分で決めています。
インデックスで指定していますが、図形の名前で指定することができます。
図形の名前は、図形を選択すると、数式バーの左の欄に表示されます。
' シート上の図形を取得
Set shp = ws.Shapes("四角形: 角を丸くする 1")
例えば、このように書くと、先ほど選択していた図形を指定できます。
ルパンのタイトルみたいなフラッシュ表示(お遊び)
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub AddTextToShape()
Dim ws As Worksheet
Dim shp As Shape
' アクティブシートを設定
Set ws = ActiveSheet
' シート上の図形を取得
Set shp = ws.Shapes(1)
' ここからフラッシュ表示
Dim txt As String
Dim i As Long
txt = "退屈なことはVBAにやらせよう"
For i = 1 To Len(txt)
shp.TextFrame2.TextRange.Characters.Text = Left(txt, i)
DoEvents
DoEvents
Sleep 100
shp.TextFrame2.TextRange.Characters.Text = ""
Next
End Sub
ちょっとしたお遊びプログラム。
動かすと、図形上にテキストがルパンのタイトル表示みたいに、現れてきます。