Excel VBA 図形にテキストを追加する TextFrameオブジェクト

スポンサーリンク
スポンサーリンク

図形にテキストを追加する TextFrame【テキストフレーム】オブジェクト

TextFrame【テキストフレーム】は、図形の「テキストレイアウト枠」を表す、オブジェクトです。
図形を表す、Shape【シェイプ】オブジェクトのTextFrame【テキストフレーム】プロパティを使用して取得します。

TextFrame【テキストフレーム】プロパティ

図形の「テキストレイアウト枠」を表すTextFrame【テキストフレーム】オブジェクトを取得するにはShape【シェイプ】オブジェクトのTextFrame【テキストフレーム】プロパティを使用します。

TextFrame【テキストフレーム】プロパティの書式

オブジェクト.TextFrame


設定値の説明

TextFrame【テキストフレーム】オブジェクトのメソッド一覧

メソッド 内容
Characters
【キャラクターズ】
図形のレイアウト枠に含まれる文字範囲を表す
Characters【キャラクターズ】 オブジェクトを返します。

TextFrame【テキストフレーム】オブジェクトの主なプロパティ一覧

プロパティ 内容
AutoMargins
【オートマージンズ】
テキスト枠の余白を自動計算するかどうかを
設定または取得します。
AutoSize
【オートサイズ】
指定されたオブジェクトの大きさを
境界線内のテキストに合わせて自動的に
変更するかしないかを設定または取得します。
HorizontalAlignment
【ホリゾンタルアライメント】
テキストの水平位置を設定または取得します。
HorizontalOverflow
【ホリゾンタルオーバーフロー】
水平方向のレイアウト枠をはみ出た
テキストの表示方法を設定または取得します。
VerticalAlignment
【バーティカルアライメント】
テキストの垂直位置を設定または取得します。
VerticalOverflow
【バーティカルオーバーフロー】
垂直方向のレイアウト枠をはみ出た
テキストの表示方法を設定または取得します。
MarginBottom
【マージンボトム】
レイアウト枠の下方向の余白を設定または取得します。
MarginLeft
【マージンレフト】
レイアウト枠の左方向の余白を設定または取得します。
MarginRight
【マージンライト】
レイアウト枠の右方向の余白を設定または取得します。
MarginTop
【マージントップ】
レイアウト枠の上方向の余白を設定または取得します。
Orientation
【オリエンテーション】
レイアウト枠内の文字列の向きを設定または取得します。

Characters【キャラクターズ】メソッド

図形のレイアウト枠に含まれる参照する文字範囲を表すCharacters【キャラクターズ】 オブジェクトを取得するには、TextFrame【テキストフレーム】オブジェクトのCharacters【キャラクターズ】メソッドを使用します。

Characters【キャラクターズ】 オブジェクトは、レイアウト枠内に文字を追加したり文字書式を設定したりすることができます。

Characters【キャラクターズ】メソッドの書式

[]内は省略可能です。
オブジェクト.Characters( [Start, Length] )


設定値(引数)の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • Start【スタート】(省略可)
    範囲の何文字目から取得するかを指定します。この引数に 1 を設定するか省略すると、その範囲の先頭から取得します。
  • Length【レングス】(省略可)
    取得する文字数を指定します。この引数を省略すると、引数 Start 文字範囲より後の全体を取得します。

AutoMargins【オートマージンズ】プロパティ

テキスト枠の余白を自動計算するかどうかを設定または取得するには、TextFrame【テキストフレーム】オブジェクトのAutoMargins【オートマージンズ】プロパティを使用します。

AutoMargins【オートマージンズ】プロパティの書式

【設定】
オブジェクト.AutoMargins = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    設定値 内容
    False(既定値) 余白を自動計算しません。
    True 余白を自動計算します。

AutoSize【オートサイズ】プロパティ

指定されたオブジェクトの大きさを境界線内のテキストに合わせて、自動的に変更するかしないかを設定または取得するにはTextFrame【テキストフレーム】オブジェクトのAutoSize【オートサイズ】プロパティを使用します。

AutoSize【オートサイズ】プロパティの書式

【設定】
オブジェクト.AutoSize = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    設定値 内容
    False テキスト枠の大きさを変更しません。(既定値)
    True テキストに合わせてテキスト枠の大きさを自動で変更します。

HorizontalAlignment【ホリゾンタルアライメント】プロパティ

テキストの水平位置を設定または取得するには、TextFrame【テキストフレーム】オブジェクトの
HorizontalAlignment【ホリゾンタルアライメント】プロパティを使用します。

HorizontalAlignment【ホリゾンタルアライメント】プロパティの書式

【設定】
オブジェクト.HorizontalAlignment = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    指定されたオブジェクトの横位置の配置を表すXlHAlign列挙型の定数を設定します。

    XlHAlign列挙型の定数
    定数 内容
    xlHAlignLeft -4131 左揃え(既定値)
    xlHAlignRight -4152 右揃え
    xlHAlignJustify -4130 両端揃え
    xlHAlignDistributed -4117 均等割り付け
    xlHAlignCenter -4108 中央揃え
    xlHAlignGeneral 1 データの種類に従って揃える
    xlHAlignFill 5 ページ幅に合わせる
    xlHAlignCenterAcrossSelection 7 選択肢の中央揃え

HorizontalOverflow【ホリゾンタルオーバーフロー】プロパティ

水平方向のレイアウト枠をはみ出たテキストの表示方法を設定または取得するには、TextFrame【テキストフレーム】オブジェクトのHorizontalOverflow【ホリゾンタルオーバーフロー】プロパティを使用します。
※TextFrame2【テキストフレームツゥ】オブジェクトのWordWrap【ワードワープ】プロパティに「改行しない」を表す「msoFalse」が設定されているときとTextFrame【テキストフレーム】オブジェクトの
AutoSize【オートサイズ】プロパティにテキストに合わせてテキスト枠の大きさを変更しない、既定値の「False」が設定されているときに設定が反映します。

HorizontalOverflow【ホリゾンタルオーバーフロー】プロパティの書式

【設定】
オブジェクト.HorizontalOverflow = 設定値


設定値

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    レイアウト枠の水平方向のオーバーフロー設定を指定します。XlOartHorizontalOverflow列挙型の定数で指定します。

    XlOartHorizontalOverflow列挙型の定数
    定数 内容
    xlOartHorizontalOverflowOverflow 0 テキストはレイアウト枠から
    はみ出すことができます。
    xlOartHorizontalOverflowClip 1 水平方向のレイアウト枠に
    収まらないテキストを非表示にします。

VerticalAlignment【バーティカルアライメント】プロパティ

テキストの垂直位置を設定または取得するには、TextFrame【テキストフレーム】オブジェクトの
VerticalAlignment【バーティカルアライメント】プロパティを使用します。

VerticalAlignment【バーティカルアライメント】プロパティの書式

【設定】
オブジェクト.VerticalAlignment = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    指定されたオブジェクトの横位置の配置を表すXlVAlign列挙型の定数を設定します。

    XlVAlign列挙型の定数
    定数 内容
    xlVAlignBottom -4107 下揃え
    xlVAlignCenter -4108 中央揃え
    xlVAlignDistributed -4117 均等割り付け
    xlVAlignJustify -4130 両端揃え
    xlVAlignTop -4160 上揃え(既定値)

VerticalOverflow【バーティカルオーバーフロー】プロパティ

水平方向のレイアウト枠をはみ出たテキストの表示方法を設定または取得するには、TextFrame【テキストフレーム】オブジェクトのVerticalOverflow【バーティカルオーバーフロー】プロパティを使用します。
※TextFrame【テキストフレーム】オブジェクトのAutoSize【オートサイズ】プロパティにテキストに合わせてテキスト枠の大きさを変更しない既定値の「False」が設定されているときに設定が反映します。

VerticalOverflow【バーティカルオーバーフロー】プロパティの書式

【設定】
オブジェクト.VerticalOverflow = 設定値


設定値

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    レイアウト枠の垂直方向のオーバーフロー設定を指定します。XlOartVerticalOverflow列挙型の定数で指定します。

    XlOartVerticalOverflow列挙型の定数
    定数 内容
    xlOartVerticalOverflowOverflow 0 テキストはレイアウト枠から
    はみ出すことができます。
    xlOartVerticalOverflowClip 1 水平方向のレイアウト枠に
    収まらないテキストを非表示にします。
    xlOartVerticalOverflowEllipsis 2 垂直方向のレイアウト枠内に収まらない
    テキストを非表示にし、表示されるテキストの
    終わりに省略記号 (…) を追加します。

MarginBottom【マージンボトム】プロパティ

テキストレイアウト枠の下方向の余白を設定または取得するには、TextFrame【テキストフレーム】オブジェクトのMarginBottom【マージンボトム】プロパティを使用します。

MarginBottom【マージンボトム】プロパティの書式

【設定】
オブジェクト.MarginBottom = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    テキストレイアウト枠の下側の余白をポイント単位で設定します。

MarginLeft【マージンレフト】プロパティ

テキストレイアウト枠の左方向の余白を設定または取得するには、TextFrame【テキストフレーム】オブジェクトのMarginLeft【マージンレフト】プロパティを使用します。

MarginLeft【マージンレフト】プロパティの書式

【設定】
オブジェクト.MarginLeft = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    テキストレイアウト枠の左側の余白をポイント単位で設定します。

MarginRight【マージンライト】プロパティ

テキストレイアウト枠の右方向の余白を設定または取得するには、TextFrame【テキストフレーム】オブジェクトのMarginRight【マージンライト】プロパティを使用します。

MarginRight【マージンライト】プロパティの書式

【設定】
オブジェクト.MarginRight = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    テキストレイアウト枠の右側の余白をポイント単位で設定します。

MarginTop【マージントップ】プロパティ

テキストレイアウト枠の上方向の余白を設定または取得するには、TextFrame【テキストフレーム】オブジェクトのMarginTop【マージントップ】プロパティを使用します。

MarginTop【マージントップ】プロパティの書式

【設定】
オブジェクト.MarginTop = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    テキストレイアウト枠の上側の余白をポイント単位で設定します。

Orientation【オリエンティーション】プロパティ

テキストレイアウト枠内の文字列の向きを設定または取得するには、TextFrame【テキストフレーム】オブジェクトのOrientation【オリエンティーション】プロパティを使用します。

Orientation【オリエンティション】プロパティの書式

【設定】
オブジェクト.Orientation = 設定値


設定値の説明

  • オブジェクト(必須)
    TextFrame【テキストフレーム】オブジェクトを返すオブジェクト式を指定します。
  • 設定値(必須)
    テキストの方向をMsoTextOrientation列挙型の定数で指定します。

    MsoTextOrientation列挙型の定数
    定数 内容
    msoTextOrientationHorizontal 1 水平方向(既定値)
    msoTextOrientationUpward 2 下から上
    msoTextOrientationDownward 3 上から下
    msoTextOrientationVerticalFarEast 4 垂直方向
    (アジアの言語のサポート用)
    msoTextOrientationVertical 5 垂直方向
    msoTextOrientationHorizontalRotatedFarEast 6 水平方向および回転
    (アジアの言語のサポート用)

    ※通常、日本語環境では、横書きの場合は「msoTextOrientationHorizontal」縦書きの場合は「msoTextOrientationVerticalFarEast」を設定します。


楕円(図形)の中心に文字列(テキスト)を設定するコード例

Sub 図形テキスト()
Dim 範囲 As Range
Dim 図形 As Shape
Set 範囲 = Range("B2:F10")
Set 図形 = ActiveSheet.Shapes.AddShape(msoShapeOval, _
範囲.Left, 範囲.Top, 範囲.Width, 範囲.Height)
図形.Fill.ForeColor.RGB = RGB(255, 0, 0)
With 図形.TextFrame
.Characters.Text = "Excel VBA"
.Characters.Font.Color = RGB(0, 0, 255)
.Characters.Font.Size = 40
.HorizontalAlignment = xlHAlignCenter
.VerticalAlignment = xlVAlignCenter
End With
End Sub

コードの解説

2行目【Dim 範囲 As Range】
図形の位置や大きさの基準となるセル範囲を格納する変数「範囲」をオブジェクト型(Range)で宣言します。


3行目【Dim 図形 As Shape】
作成した図形を格納する変数「図形」をオブジェクト型(Shape)で宣言します。


4行目【Set 範囲 = Range(“B2:F10”)】
図形の位置と大きさの基準となるセル範囲をRangeプロパティで指定してオブジェクト変数「範囲」にSet【セット】キーワードを使用して代入します。


5行目~6行目【Set 図形 = ActiveSheet.Shapes.AddShape(msoShapeOval, _
範囲.Left, 範囲.Top, 範囲.Width, 範囲.Height)】

Shapes【シェイプス】コレクションのAddShape【アドシェイプ】メソッドを使用して図形を表すShape【シェイプ】オブジェクトを取得しオブジェクト変数「図形」にSet【セット】キーワードを使用して代入します。


7行目【図形.Fill.ForeColor.RGB = RGB(255, 0, 0)】
変数「図形」に格納されているShape【シェイプ】オブジェクトのFill【フィル】プロパティを使用して、図形の書式を表すFillFormat【フィルフォーマット】オブジェクトを取得し、ForeColor【フォアカラー】プロパティで色の書式を表すColorFormat【カラーフォーマット】オブジェクトを取得してRGB【アールジービー】プロパティにRGB関数で図形の塗りつぶしの色を赤に設定します。


8行目【With 図形.TextFrame】
変数「図形」に格納されているShape【シェイプ】オブジェクトのTextFrame【テキストフレーム】プロパティでテキストレイアウト枠を表すTextFrame【テキストフレーム】オブジェクトを取得してWith【ウィズ】ステートメントで指定します。


9行目【.Characters.Text = “Excel VBA”】
With【ウィズ】ステートメントで指定したTextFrame【テキストフレーム】オブジェクトのCharacters【キャラクターズ】メソッドを使用して図形のレイアウト枠に含まれる文字範囲を表す
Characters【キャラクターズ】 オブジェクトを取得し、Text【テキスト】プロパティを使用して文字列を設定します。


10行目【.Characters.Font.Color = RGB(0, 0, 255)】
上記と同じく、文字列を参照して、Font【フォント】プロパティでFont【フォント】オブジェクトを取得し、Color【カラー】プロパティにRGB関数で青を設定して文字列に色を設定します。


11行目【 .Characters.Font.Size = 40】
文字列のサイズをFont【フォント】オブジェクトのSize【サイズ】プロパティで40に設定します。


12行目【 .HorizontalAlignment = xlHAlignCenter】
TextFrame【テキストフレーム】オブジェクトのHorizontalAlignment【ホリゾンタルアライメント】プロパティを使用して文字列の水平位置を中央揃えに設定します。


13行目【.VerticalAlignment = xlVAlignCenter】
TextFrame【テキストフレーム】オブジェクトのVerticalAlignment【バーティカルアライメント】プロパティを使用して文字列の垂直位置を中央揃えに設定します。


実行結果


以上で、図形にテキストを追加する TextFrame【テキストフレーム】オブジェクトについての解説を終了します。ありがとうございました。

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク