ちょっと難しい仕組みを書きます。
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 | 広い |