このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】図形にテキストを入れる方法(オートシェイプ)

今回は、Excelの図形にテキストを入れる方法を紹介します。

図形のテキストは、図形オブジェクト(Shape)のかなり下のほうのオブジェクトを操作する必要があります。(TextFrame2と言うオブジェクトです)

簡単なサンプルコードをお見せしますので、コピペして使ってみてください。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

図形にテキストを入れる方法(オートシェイプ)

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

ちょっとしたお遊びプログラム。

動かすと、図形上にテキストがルパンのタイトル表示みたいに、現れてきます。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい