6-10.図形の操作:文字列を中央揃えに設定するには?

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

実行例

 

2022年9月14日

6-09.図形の操作:文字サイズや書体を変えるには?

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

 

図●実行例

 

2022年9月14日

6-08.図形の操作:図形内に文字列を挿入するには?

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

 

実行例

 

2022年9月14日

6-07.図形の操作:図形の色を設定するには?

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

 

実行例

 

6-06.図形の操作:線の色を設定するには?

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

 

実行例

 

2022年9月14日

6-05.図形の操作:線のスタイルや太さを変えるには?

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

 

実行例

2022年9月14日

6-04.図形の操作:矢印を引くには?

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

 

実行例

2022年9月14日

6-03.図形の操作:線を引くには?

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

 

実行例

 

2022年9月14日

6-02.図形の操作:図形の名前を設定/取得するには?

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

 

実行例

 

2022年9月13日

6-01.図形の操作:図形を挿入するには?

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

 

2022年9月13日