金曜日, 4月 28, 2023

Excel VBA 14 
デフォルトの図形名取得と図形描画方法

VBAで図形を描画するためには、その図形の名称が必要になります。これは事前に一度描画してから確認するしかないようです。

取りあえず上の順番で適当に図形を描画しました。後は確認したい図形を選択し、以下のVBAを実行します。
--------------------
Sub 図形の名称()
MsgBox Selection.name
    '選択した図形の名称をメッセージボックスに表示
End Sub
--------------------

1つ目は[Cloud](雲)でした。数字は作図の順番です。なお、単に図形を選択するだけで左上の[名前ボックス]には和名が表示されますが、VBAでの指定では和名は使えません。

2つ目は[Lightning Bolt](稲妻)でした。

3つ目は[Hart](ハート)でした。

4つ目は[Plaque](ブローチ)でした。

ということで、ベタな展開ですが、以下の様にハートを描画することにしました。
VBAソースは以下の様に組みました。
--------------------
Sub 図形描画()
Dim sp As Shape
'spはShape
Set sp = ActiveSheet.Shapes.AddShape(msoShapeHeart,
        120, 100, 200, 160)
'図形の描画位置とサイズを指定
'数値は左端から(上からの距離, 左からの距離、図形の高さ、図形の幅)
'単位は全てピクセル
sp.Line.Weight = xlThick
'線の太さ 太線 
'ピクセル指定の場合は 5ピクセルなら 5#
sp.Fill.ForeColor.RGB = RGB(255, 182, 193)
'塗りつぶしの色 lightpink(#ffb6c1)
sp.Line.ForeColor.RGB = RGB(255, 105, 180)
'線の色 hotpink(#ff69b4)
sp.TextFrame.Characters.Text = "Happy"
'図形内に「Happy」を表示
sp.TextFrame.Characters.Font.Size = 40
'文字サイズは40ポイント
sp.TextFrame.VerticalAlignment = xlVAlignCenter
'文字は図形内に垂直中央配置
sp.TextFrame.HorizontalAlignment = xlHAlignCenter
'文字は図形内に水平中央配置
sp.TextFrame.Characters.Font.Color = RGB(255, 255, 255)
'テキストの色 White(#ffffff)
End Sub
--------------------

上は・・・
Set sp = ActiveSheet.Shapes.AddShape(msoShapeHeart,
    120, 100, 200, 160)
'図形の描画位置とサイズを指定
の数値の意味です。

sp.Line.Weight = xlThick
'線の太さ 太線 
'ピクセル指定の場合は 5ピクセルなら 5#
線の太さ指定は[Excel VBA 09]を参照してください。

フォント指定や色などの文字設定は、TextFrameオブジェクトのCharactersメソッドで行います。以下がCharactersメソッドの主なプロパティです。

サイズや位置設定は、TextFrameオブジェクトで行います。以下がTextFrameオブジェクトの主なプロパティです。

垂直方向での定義定数

水平方向での定義定数