ちょっと難しい仕組みを書きます。
ActiveSheet.Shapes.AddConnector
で挿入されるのは、Shapeオブジェクトです。Shapeオブジェクトには、このページで取り上げている"直線"だけでなく、"四角形"や"テキストボックス"などもあります。そうしたShapeオブジェクトの中は、さらに多くのパーツ(オブジェクト)に分かれています。"四角形"や"テキストボックス"などの枠線は、LineFormatオブジェクトで表されます。"直線"は"四角形"や"テキストボックス"などとは違い、線しかありません。したがって、"直線"自体がLineFormatオブジェクトといえます。そのLineFormatオブジェクトは、ShapeオブジェクトのLineプロパティで表されます。
ActiveSheet.Shapes.AddConnector(…).Line ''←LineFormatオブジェクト
最後の「LineFormatオブジェクトは、ShapeオブジェクトのLineプロパティで表されます」というのは、多くの人が「???」と感じるでしょう。そんな方は、難しく考えずに「.Lineって書けば、直線の書式などを設定できるんだ」と思ってください。
直線の太さは、Weightプロパティに数値を指定します。
Sub Macro1() Dim BeginX As Single, BeginY As Single Dim EndX As Single, EndY As Single Dim i As Long For i = 1 To 20 BeginX = Cells(i, 2).Left BeginY = Cells(i, 2).Top + Cells(i, 2).Height / 2 EndX = Cells(i, 3).Left EndY = BeginY ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _ BeginX, BeginY, EndX, EndY).Line.Weight = Cells(i, 1) Next i End Sub
直線の色は、ForeColorのRGBプロパティにRGB値を指定します。
Sub Macro2() Dim BeginX As Single, BeginY As Single Dim EndX As Single, EndY As Single BeginX = Range("B2").Left BeginY = Range("B2").Top + Range("B2").Height / 2 EndX = Range("C2").Left EndY = BeginY With ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _ BeginX, BeginY, EndX, EndY).Line .Weight = 5 .ForeColor.RGB = RGB(255, 0, 0) End With End Sub
DashStyleプロパティに次の定数を指定します。
定数 | 値 | 種類 |
---|---|---|
msoLineSolid | 1 | |
msoLineSquareDot | 2 | |
msoLineRoundDot | 3 | |
msoLineDash | 4 | |
msoLineDashDot | 5 | |
msoLineDashDotDot | 6 | |
msoLineLongDash | 7 | |
msoLineLongDashDot | 8 | |
msoLineLongDashDotDot | 9 | |
msoLineSysDash | 10 | |
msoLineSysDot | 11 | |
msoLineSysDashDot | 12 |
Sub Macro3() Dim BeginX As Single, BeginY As Single Dim EndX As Single, EndY As Single BeginX = Range("B2").Left BeginY = Range("B2").Top + Range("B2").Height / 2 EndX = Range("C2").Left EndY = BeginY With ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _ BeginX, BeginY, EndX, EndY).Line .Weight = 3 .DashStyle = msoLineSysDot End With End Sub
Styleプロパティに次の定数を指定します。
定数 | 値 | 種類 |
---|---|---|
msoLineSingle | 1 | |
msoLineThinThin | 2 | |
msoLineThinThick | 3 | |
msoLineThickThin | 4 | |
msoLineThickBetweenThin | 5 |
Sub Macro4() Dim BeginX As Single, BeginY As Single Dim EndX As Single, EndY As Single BeginX = Range("B2").Left BeginY = Range("B2").Top + Range("B2").Height / 2 EndX = Range("C2").Left EndY = BeginY With ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _ BeginX, BeginY, EndX, EndY).Line .Weight = 5 .Style = msoLineThinThin End With End Sub
矢印は、直線の"始点"と"終点"に、それぞれ設定できます。
【始点に設定する矢印】
【終点に設定する矢印】
「○○Style」は、矢印の種類(スタイル)を指定します。
定数 | 値 | 種類 |
---|---|---|
msoArrowheadNone | 1 | 矢印なし |
msoArrowheadTriangle | 2 | 三角矢印 |
msoArrowheadOpen | 3 | 開いた矢印 |
msoArrowheadStealth | 4 | 鋭い矢印 |
msoArrowheadDiamond | 5 | ひし型 |
msoArrowheadOval | 6 | 円形矢印 |
「○○Length」は、矢印の長さを指定します。
定数 | 値 | 長さ |
---|---|---|
msoArrowheadShort | 1 | 短い |
msoArrowheadLengthMedium | 2 | 普通 |
msoArrowheadLong | 3 | 長い |
「○○Width」は、矢印の幅を指定します。
定数 | 値 | 幅 |
---|---|---|
msoArrowheadNarrow | 1 | 狭い |
msoArrowheadWidthMedium | 2 | 普通 |
msoArrowheadWide | 3 | 広い |