TextFrame2オブジェクトのVerticalAnchorプロパティとHorizontalAnchorプロパティ
オブジェクト.VerticalAnchor
オブジェクト.HorizontalAnchor
図形内に挿入した文字列を図形の中央に配置するには、TextFrame2プロパティで取得したTextFrame2オブジェクトのVerticalAnchorプロパティとHorizontalAnchorプロパティ
を利用します。
VerticalAnchorプロパティでは、垂直方向の配置を表1の定数で指定します。HorizontalAnchorでは、水平方向の配置を、表2の定数で指定します。
表1●垂直方向の配置を指定するための定数
上端揃え msoAnchorTop
中央揃え msoAnchorMiddle
下端揃え msoAnchorBottom
表2●水平方向の配置を指定するための定数
設定なし msoAnchorNone
中央揃え msoAnchorCenter
図形内の文字列を上下左右の中央に配置する
Sub Sample()
With ActiveSheet.Shapes(1).TextFrame2
.VerticalAnchor = msoAnchorMiddle
.HorizontalAnchor = msoAnchorCenter
End With
End Sub
実行例


ShapeオブジェクトのTextFrame2プロパティ、NameFarEastプロパティ
オブジェクト.Font.Size
オブジェクト.Font.NameFarEast
図形内に挿入した文字列の大きさを指定するには、ShapeオブジェクトのTextFrame2プロパティでTextFrame2オブジェクトを取得し、そのTextRangeプロパティでTextRange2オブジェクトを取得します。このTextRange2オブジェクトのFontプロパティを操作することで、文字のサイズなどを指定できます。
文字サイズはSizeプロパティで設定します。日本語のフォントを変更するには、NameFarEastプロパティでフォント名を指定します。Excel 2007以降では、NameFarEastプロパティを使って“日本語用のフォント”と明示しないと、正しくフォントを変更できません。
図形内の文字サイズを「18」、フォントを「MS 明朝」に設定
Sub Sample()
With ActiveSheet.Shapes(1).TextFrame2
.TextRange.Font.Size = 18
.TextRange.Font.NameFarEast = “MS 明朝”
End With
End Sub
図●実行例


ShapeオブジェクトのTextFrame2プロパティ、TextRange2オブジェクトのCharactersプロパティ
オブジェクト.Characters.Text
図形内に文字列を挿入するには、ShapeオブジェクトのTextFrame2プロパティでTextFrame2オブジェクトを取得し、そのTextRangeプロパティでTextRange2オブジェクトを取得します。TextRange2オブジェクトのCharactersプロパティは、オブジェクトに含まれる文字列を表すCharactersオブジェクトを返します。そのTextプロパティに文字列を代入します。TextFrame2オブジェクトやTextRange2オブジェクトは、Excel 2007で追加された機能です。
図形の中に、「Jam&Momo」という文字列を挿入する
Sub Sample()
With ActiveSheet.Shapes(1).TextFrame2
.TextRange.Characters.Text = “Jam&Momo”
End With
End Sub
実行例


FillFormatオブジェクトのForeColorプロパティ、ColorFormatオブジェクトのObjectThemeColorプロパティ、LineFormatオブジェクトのForeColorプロパティ
オブジェクト.ForeColor.ObjectThemeColor
オブジェクト.ForeColor.RGB
図形の塗りつぶしを設定するには、まずFillプロパティでFillFormatオブジェクトを取得します。そしてFillFormatオブジェクトのForeColorプロパティでColorFormatオブジェクトを取得し、そのObjectThemeColorプロパティに、設定したいテーマの色を指定します。
また、図形の枠線の色を設定するには、ShapeオブジェクトのLineプロパティでLineFormatオブジェクトを取得します。LineFormatオブジェクトのForeColorプロパティでColorFormatオブジェクトを取得し、テーマ色を指定します。
なお、ForeColor.RGB = RGB(128, 54, 205)のように指定すれば、いずれもRGB値で色を指定することが可能です。
図形の塗りつぶしと枠線の色を設定
Sub Sample()
With ActiveSheet.Shapes(1)
.Fill.ForeColor.ObjectThemeColor = _
msoThemeColorBackground2
.Line.ForeColor.RGB = RGB(255, 0, 0)
End With
End Sub
実行例


ColorFormatオブジェクトのObjectThemeColorプロパティ
オブジェクト.ForeColor.ObjectThemeColor
オブジェクト.ForeColor.RGB
線の色を設定するには、ForeColorでColorFormatオブジェクトを取得し、ColorFormatオブジェクトのObjectThemeColorプロパティに、テーマの色を定数(表)で指定します。右のサンプルコードでは、テーマ色を赤にした上で、TintAndShadeプロパティで少し明るくしています。
また、ForeColor.RGB = RGB(128, 54, 205)のように、RGB値で色を指定することも可能です。
線のテーマ色を赤にして、少し明るくする
Sub Sample()
With ActiveSheet.Shapes(1).Line
.ForeColor.ObjectThemeColor = msoThemeColorAccent2
.ForeColor.TintAndShade = 0.5
End With
End Sub
実行例


LineプロパティでLineFormatオブジェクト、DashStyleプロパティ、Weightプロパティ
オブジェクト.DashStyle
オブジェクト.Weight
線のスタイルや太さを変更するには、LineプロパティでLineFormatオブジェクトを取得し、LineFormatオブジェクトのDashStyleプロパティやWeightプロパティを指定します。線のスタイルを表す定数は、表の通りです。太さは数値で指定します。
表●線のスタイルを表す主な定数
実線 |
msoLineSolid |
点線(丸) |
msoLineSysDot |
点線(角) |
msoLineSysDash |
破線 |
msoLineDash |
一点鎖線 |
msoLineDashDot |
長破線 |
msoLineLongDash |
長鎖線 |
msoLineLongDashDot |
長二点鎖線 |
msoLineLongDashDotDot |
線のスタイルを破線にして、太さを5にする
Sub Sample()
With ActiveSheet.Shapes(1).Line
.DashStyle = msoLineDash
.Weight = 5
End With
End Sub
実行例


ShapesコレクションのAddConnectorメソッド、EndArrowheadStyleプロパティ
オブジェクト.EndArrowheadStyle
シート上に矢印を引くには、まずShapesコレクションのAddConnectorメソッドで線を引いた上で、その線に対してEndArrowheadStyleプロパティなどで矢の種類を指定します。
矢の種類を表す定数は表の通りです。
表●矢の種類を表す定数
矢印なし |
msoArrowheadNone |
丸 |
msoArrowheadOval |
ひし形 |
msoArrowheadDiamond |
開いた矢印 |
msoArrowheadOpen |
塗りつぶした矢印 |
msoArrowheadStealth |
サンプル●B2セルの左上隅からE4セルの左上隅へと矢印を引く
Sub Sample()
With ActiveSheet.Shapes.AddConnector( _
Type:=msoConnectorStraight, _
BeginX:=Range(“B2”).Left, _
BeginY:=Range(“B2”).Top, _
EndX:=Range(“E4”).Left, _
EndY:=Range(“E4”).Top)
.Line.EndArrowheadStyle = msoArrowheadStealth
End With
End Sub
実行例


ShapesコレクションのAddConnectorメソッド
Shapes.AddConnector
(Type, BeginX, BeginY, EndX, EndY)
マクロで図形描画機能を使ってシート上に線を引くには、ShapesコレクションのAddConnectorメソッドを実行します。
AddConnectorメソッドでは、線の種類(Type)を定数で指定し、直線の始点(BeginX、BeginY)と終点(EndX、EndY)の位置を引数に指定します。線の種類は表の定数で指定します。始点と終点は、シートの左、上からの距離を数値(ポイント)で指定します。この値はRangeオブジェクトのLeft、Topプロパティと共通です。
表●線の種類を表す定数
カギ線 |
msoConnectorElbow |
右矢印 |
msoConnectorStraight |
曲線 |
msoConnectorCurve |
B2セルの左上隅からE4セルの左上隅にかけて直線を引く
Sub Sample()
ActiveSheet.Shapes.AddConnector _
Type:=msoConnectorStraight, _
BeginX:=Range(“B2”).Left, _
BeginY:=Range(“B2”).Top, _
EndX:=Range(“E4”).Left, _
EndY:=Range(“E4”).Top
End Sub
実行例


ShapeオブジェクトのNameプロパティ
オブジェクト.Name
図形の名前を設定/取得するには、ShapeオブジェクトのNameプロパティを使います。図形の名前とは、図形を選択したときに、シート左上の名前ボックスに表示されるものです。
挿入した図形の標準の名前は、名前ボックスでは日本語で表示されますが、Nameプロパティでは、英語表記となります(図1)。ただし、名前ボックスあるいはマクロを使って変更した名前は、日本語表記がそのまま適用されます(図2)。
Sample1:選択した円の名前をNameプロパティで表示
Sub Sample1()
MsgBox Selection.Name
End Sub
実行例


Sample2:名前を変更した後で、メッセージボックスに表示
Sub Sample2()
With ActiveSheet.Shapes(1)
.Name = “五角形”
MsgBox .Name
End With
End Sub
実行例


ShapesコレクションのAddShapeメソッド
Shapes.AddShape
(Type, Left, Top, Width, Height)
シート上に図形(オートシェイプ)を挿入するには、ShapesコレクションのAddShapeメソッドを実行します。挿入する図形の種類、位置、大きさを引数に指定します。
図形の種類(Type)は、表のような定数で指定します。位置は、シートの左端からの位置(Left)と、上端からの位置(Top)で指定します。大きさは、幅(Width)と高さ(Height)で指定します。単位はピクセルです。
図形の位置や大きさは、RangeオブジェクトのLeft、Top、Width、Heightプロパティと共通なので、セルの位置や大きさに合わせて図形を配置することが可能です。
サンプル●B2 ~ E5セルの位置に長方形を挿入
Sub Sample()
With Range(“B2:E5”)
ActiveSheet.Shapes.AddShape _
Type:=msoShapeRectangle, Left:=.Left, _
Top:=.Top, Width:=.Width, Height:=.Height
End With
End Sub
実行例


表●主な図形の種類(定数)
方形/長方形 |
msoShapeRectangle |
右矢印 |
msoShapeRightArrow |
円/楕円 |
msoShapeOval |
四角形吹き出し |
msoShapeRectangularCallout |
角丸四角形 |
msoShapeRoundedRectangle |
爆発 1 |
msoShapeExplosion1 |
二等辺三角形 |
msoShapeIsoscelesTriangle |
直線コネクタ |
msoConnectorStraight |