セルに関係なく文字を表示したいときは
ワードアートを使うしかないと思っていましたが、
テキストボックスというものがあるのですね。
下の画像は[図形描画]ルーツボックスですが、
テキストボックスは矢印のマークです。
これ、横組みか縦組みかを選択するだけのボタンだと思ってました。
横組みのテキストボックスか、
縦組みかのテキストボックスを選択するボタンでした。
文字をVBAで作成して遊びたいと考えていて、
その為にShapeについて調べています。
今回はテキストボックスを作成、変更などについて
やっていきます。
まずはテキトーにテキストボックスを作成して、
マクロ自動記録します。
自動記録を少し加工したコードはこちら
テキストボックスを作成コード1:Sub macro110710a() 'テキストボックス作成 'マクロ自動記録から
'テキストボックス作成 ActiveSheet.Shapes.AddTextbox( _ msoTextOrientationHorizontal, _ 369#, 99.75, _ 176.25, 111# _ ).Select 'ボックス内の文字列 Selection.Characters.Text = "abc" & Chr(10) & "def" '文字装飾 With Selection.Characters.Font .Name = "MS Pゴシック " .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub |
テキストボックスの作成には
AddTextboxメソッドを使います。
AddTextboxメソッドの引数は順番に次のようになっています。
ラベル内のテキストの向き
左端からの位置
上端からの位置
幅
高さ
テキストボックスを作成するとき
後で設定を変更する予定があるのか、ないのかで方法が違うと思います。
変更する予定がある場合は名前をつけたほうが
後々便利だと思います。
変更する予定がない場合は名前をつけるのが手間ですので、
作成したテキストボックスを
SelectしてSelectionをWithステートメントで使うか(上のコード)、
オブジェクト変数に入れてその変数を使います。
次のコードはNameプロパティを使う方法と
オブジェクト変数を使う方法です。
テキストボックスを作成コード2:Sub macro110710b() 'テキストボックス作成 'Nameを使用
Dim tbName As String tbName = "テキスト" '名前 'テキストボックス作成 ActiveSheet.Shapes.AddTextbox( _ msoTextOrientationHorizontal, _ 369#, 99.75, _ 176.25, 111# _ ).Name = tbName 'ボックス内の文字列 ActiveSheet.Shapes(tbName).DrawingObject. _ Characters.Text = "abc" & Chr(10) & "def" '文字装飾 With ActiveSheet.Shapes (tbName).DrawingObject. _ Characters.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub
Sub macro110710c() 'テキストボックス作成 'オブジェクト変数を使用
Dim tb As Object 'テキストボックス作成 Set tb = ActiveSheet.Shapes.AddTextbox( _ msoTextOrientationHorizontal, _ 369#, 99.75, _ 176.25, 111#).DrawingObject ' ボックス内の文字列 tb.Characters.Text = "abc" & Chr(10) & "def" '文字装飾 With tb.Characters.Font .Name = "MS Pゴシック " .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub |
文字の装飾のコードの部分は
読んでそのままです。
AddTextboxメソッドの引数で左端からの位置と高さの値、
#が最後についています。
マクロ自動記録したものですので確信はありませんが、
これは型宣言文字だと思います。
型宣言文字は、
数値の最後につけるとデータ型を宣言できるというものです。
しかしAddTextboxメソッドのこの引数はSingle型で、
#はDouble型の型宣言文字です。
Single型の型宣言文字は、! なんですが、
この型の不一致についてはいまいちわかりません。
この#を消して上のコード3つを実行してもエラーにはならないので、
自分で数値を指定する場合も
まあ気にしなくても問題ないと思います。
樹を写生するときは大枝から描くように…
小枝はあとまわしです。
コメント
Word2013 VBA でテキストボックスの作成するのに
非常に役に立ちました。
.DrawingObject
は不要でした。
ボックス内の文字列は
tb.TextFrame.TextRange.Text= "abc" & Chr(10) & "def"
文字装飾は
tb.TextFrame.TextRange.Text.Font
以下で設定可能です。
ありがとうございました。
投稿: ポン | 2015年10月27日 (火) 00時02分