Excel VBA ワークシートにテキストボックスを作成する

スポンサーリンク

ワークシートにテキストボックスを作成する方法

ワークシート上にテキストボックスを作成するには、Shapes【シェイプス】コレクションのAddTextbox【アドテキストボックス】メソッドを使用します。

AddTextbox【アドテキストボックス】メソッド

AddTextbox【アドテキストボックス】はワークシート上にテキストボックス作成して図形を表すShape【シェイプ】オブジェクトを返します。

AddTextbox【アドテキストボックス】メソッドの書式と設定値(引数)の説明

オブジェクト.AddTextbox( Orientation, Left, Top, Width, Height )

  • オブジェクト(必須)
    Shapes【シェイプス】コレクションを指定します。
  • Orientation【オリエンティーション】(必須)
    テキストボックスの文字列の向きをMsoTextOrientation列挙型の定数で指定します。

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

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

  • Left【レフト】(必須)
    テキストボックスの左端の位置をポイント単位で指定します。
  • Top【トップ】(必須)
    テキストボックスの上端の位置をポイント単位で指定します。
  • Width【ワイズ】(必須)
    テキストボックスの幅をポイント単位で指定します。
  • Height【ハイト】(必須)
    テキストボックスの高さをポイント単位で指定します。

B2セルからF10セルの範囲にテキストボックスを追加するコードと解説

Sub ワークシートテキストボックス追加()
Dim 範囲 As Range
Set 範囲 = Range("B2:F10")
ActiveSheet.Shapes.AddTextbox _
            Orientation:=msoTextOrientationHorizontal, _
            Left:=範囲.Left, Top:=範囲.Top, _
            Width:=範囲.Width, Height:=範囲.Height
End Sub
2行目【Dim 範囲 As Range】
テキストボックスの位置や大きさの元となるセル範囲を格納する変数「範囲」をオブジェクト型(Range)で宣言します。


3行目【Set 範囲 = Range(“B2:F10”)】
テキストボックスの位置と大きさを表すセル範囲をRange【レンジ】オブジェクトで指定して
オブジェクト変数「範囲」にSet【セット】キーワードを使用して代入します。


4行目~7行目【ActiveSheet.Shapes.AddTextbox _
Orientation:=msoTextOrientationHorizontal, _
Left:=範囲.Left, Top:=範囲.Top, _
Width:=範囲.Width, Height:=範囲.Height】

Shapes【シェイプス】コレクションのAddTextbox【アドテキストボックス】メソッドを使用して
ワークシートにテキストボックスを追加します。テキストボックスの文字列の向きを指定する引数Orientation【オリエンティーション】には横書きを表すmsoTextOrientationHorizontal【エムエスオーテキストオリエンテーションホリゾンタル】を指定しテキストボックスの位置を表す引数、Left、Topテキストボックスの幅と高さを表す引数、Width、Heightには、Range【レンジ】オブジェクトのLeft、Top、Width、Heightプロパティを使用して各座標をポイント単位で取得して設定します。


実行結果

テキストボックスの文字列のフォントサイズは30に設定するコードと解説

Sub ワークシートテキストボックス追加2()
Dim 範囲 As Range
Set 範囲 = Range("B2:F10")
With ActiveSheet.Shapes.AddTextbox _
           (Orientation:=msoTextOrientationHorizontal, _
            Left:=範囲.Left, Top:=範囲.Top, _
            Width:=範囲.Width, Height:=範囲.Height)
           .TextFrame.Characters.Font.Size = 30
End With
End Sub
4行目~7行目【With ActiveSheet.Shapes.AddTextbox _
(Orientation:=msoTextOrientationHorizontal, _
Left:=範囲.Left, Top:=範囲.Top, _
Width:=範囲.Width, Height:=範囲.Height)】

Shapes【シェイプス】コレクションのAddTxetbox【アドテキストボックス】メソッドを使用して、テキストボックスを表すShape【シェイプ】オブジェクトを取得し、With【ウィズ】ステートメントで指定します。With【ウィズ】ステートメントで指定するときは、AddTextbox【アドテキスト】メソッドの引数は名前付き引数で指定した場合もカッコで囲みます。(戻り値があるため)


8行目【.TextFrame.Characters.Font.Size = 30】
With【ウィズ】ステートメントで指定した、Shape【シェイプ】オブジェクトに対してテキストフレーム枠を表す、TextFrame【テキストフレーム】オブジェクトのCharacters【キャラクターズ】メソッドを使用してテキストフレーム内の文字列を参照してFont【フォント】プロパティで文字の種類を表す
Font【フォント】オブジェクトを参照してSize【サイズ】プロパティで文字列の大きさを30に設定します。


実行結果


以上で、ワークシートにテキストボックスを作成する方法についての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告