大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使って、線や矢印を引くには「.Shapes.AddLine」を使うとできます。矢印を引くには、線を引いたあとに、矢印を設定するとできます。VBAを使って、線や矢印を自動で引けるようにしていきましょう。

はじめに

この記事では、線や矢印を引く方法について、ご紹介します。

線や矢印を引くには、「.Shapes.AddLine」を使うとできます。

矢印を引くには、線を引いたあとに、線のスタイルを変更することでできます。

線のスタイルには、線の太さや色、一本線や二重線、実線や点線、始点と終点の矢印などがあります。

線や矢印を自由に引けるようにしていきましょう。

では、線や矢印を引く方法について、解説していきます。

この記事を読むメリット

  • 線や矢印を自由自在に引くことができるようになります。

本記事の内容を動画でまとめています

本記事の内容を動画にて解説しております。

VBAコードの作成手順について、動画で確認できます。

目次から見たい項目へ移動すると便利ですよ。

目次

線や矢印を引く

線や矢印を引くには、「.Shapes.AddLine」を使います。

「.Shapes.AddLine」を使う

「.Shapes.AddLine」を使って、線を引いてみます。

引数には、次のように入力をします。

「ActiveSheet.Shapes.AddLine 始点の横, 始点の縦, 終点の横, 終点の縦」

VBAコードは、次のようになります。

Sub TEST1()
  
  '線を引く
  ActiveSheet.Shapes.AddLine 10, 50, 200, 50
  
End Sub

実行すると、線を引くことができます。

線を引くことができます

線を引くことができました。

線を引いて選択する

線を引いて選択するには、次のように記載します。

Sub TEST2()
  
  '線を引いて選択
  ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Select
  
End Sub

線を引いて、線を選択することができます。

線を引いて、線を選択することができます

線を引いて、線を選択することができました。

線を引いて変数に格納

線を引いて変数に格納するには、次のようにVBAコードを記載します。

Sub TEST3()
  
  Dim A
  '線を引いて、オブジェクトとして変数に格納
  Set A = ActiveSheet.Shapes.AddLine(10, 50, 200, 50)
  
End Sub

実行すると、線を引くことができます。

線を引いて、線をオブジェクトとして変数に格納できます

線を引いて、線をオブジェクトとして変数に格納できました。

変数に格納できると、作成した変数を使って、線を操作することができるので便利です。

線を引いてスタイルを設定する

線を引いてスタイルを設定してみます。

線の太さと、線の色を変更してみます。

Sub TEST4()
  
  '線を引いて、スタイルを設定
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .Weight = 3 '太さ
    .ForeColor.RGB = RGB(255, 0, 0) '赤色
  End With
    
End Sub

線を引いて、線の太さや色を設定することができます。

線を引いて、線の太さや色を設定することができます

線を引いて、線の太さを「3ポイント」にして、色を「赤色」に設定することができました。

矢印を引く

矢印を引いてみます。

やり方としては、線を引いて、線の終点に「矢印」を設定する、という手順になります。

Sub TEST5()
  
  '矢印を引く
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .Weight = 3 '太さ
    .ForeColor.RGB = RGB(255, 0, 0) '赤色
    .EndArrowheadStyle = msoArrowheadTriangle '終点を矢印
  End With
    
End Sub

実行してみます。

矢印を引く場合は、終点に矢印を設定します

矢印を引くことができました。

線のスタイル

下記のスタイルを設定する方法について、解説します。

  • 線の太さ
  • 線の色
  • 一本線と二重線
  • 実線と点線
  • 始点の矢印
  • 終点の矢印

では、それぞれ解説していきます。

線の太さ

「線の太さ」を設定する場合は、「.Line.Weight」を使います。

Sub TEST6()
  
  '線の太さ
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .Weight = 4
  End With
    
End Sub

線の太さを設定することができます。

線の太さを設定する場合は、「.Line.Weight」を使います

線の太さを設定できました。

線の色

線の色を設定する場合は、「.Line.ForeColor.RGB」を使います。

Sub TEST7()
    
  '線の色
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .ForeColor.RGB = RGB(255, 0, 0)
  End With
    
End Sub

線を赤色に設定できます。

線の色を設定する場合は、「.Line.ForeColor.RGB」を使います

線の色を設定できました。

一本線と二重線

一本線や二重線を設定する場合は、「.Line.Style」を使います。

それぞれ次の値を入力します。

  • 一本線:msoLineSingle
  • 二重線:msoLineThinThin
  • 細線+太線:msoLineThinThick
  • 太線+細線:msoLineThickThin
  • 細線+太線+細線:msoLineThickBetweenThin

VBAコードは、次のようになります。

Sub TEST8()
    
  '線のスタイル
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .Weight = 4
    .Style = msoLineSingle '一本線
    .Style = msoLineThinThin '二重線
    .Style = msoLineThinThick '細線+太線
    .Style = msoLineThickThin '太線+細線
    .Style = msoLineThickBetweenThin '細線+太線+細線
  End With
    
End Sub

「一本線」にしたい場合は、「msoLineSingle」を入力します。

「一本線」にしたい場合は、「msoLineSingle」を入力します

「二重線」にしたい場合は、「msoLineThinThin」を入力します。

「二重線」にしたい場合は、「msoLineThinThin」を入力します

「細線+太線」にしたい場合は、「msoLineThinThick」を入力します。

「細線+太線」にしたい場合は、「msoLineThinThick」を入力します

「太線+細線」にしたい場合は、「msoLineThickThin」を入力します。

「太線+細線」にしたい場合は、「msoLineThickThin」を入力します

「細線+太線+細線」にしたい場合は、「msoLineThickBetweenThin」を入力します。

「細線+太線+細線」にしたい場合は、「msoLineThickBetweenThin」を入力します

というような感じで、実線や点線にすることができます。

実線と点線

実線や点線に変更したい場合は、「.Line.DashStyle」を使います。

それぞれ次の値を入力します。

  • 実線:msoLineSold
  • 点線(丸):msoLineSysDot
  • 点線(角):msoLineSysDash
  • 破線:msoLineDash
  • 一点鎖線:msoLineDashDot
  • 長破線:msoLineLongDash
  • 長鎖線:msoLineLongDashDot
  • 長二点鎖線:msoLineLongDashDotDot

VBAコードは、次のようになります。

Sub TEST9()
  
  '実線と点線
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .Weight = 4
    .DashStyle = msoLineSolid '実線
    .DashStyle = msoLineSysDot '点線(丸)
    .DashStyle = msoLineSysDash '点線(角)
    .DashStyle = msoLineDash '破線
    .DashStyle = msoLineDashDot '一点鎖線
    .DashStyle = msoLineLongDash '長破線
    .DashStyle = msoLineLongDashDot '長鎖線
    .DashStyle = msoLineLongDashDotDot '長二点鎖線
  End With
    
End Sub

「実線」にしたい場合は、「msoLineSolid」を入力します。

「実線」にしたい場合は、「msoLineSolid」を入力します

「点線(丸)」にしたい場合は、「msoLineSysDot」を入力します。

「点線(丸)」にしたい場合は、「msoLineSysDot」を入力します

「点線(角)」にしたい場合は、「msoLineSysDash」を入力します。

「点線(角)」にしたい場合は、「msoLineSysDash」を入力します

「破線」にしたい場合は、「msoLineDash」を入力します。

「破線」にしたい場合は、「msoLineDash」を入力します

「一点鎖線」にしたい場合は、「msoLineDashDot」を入力します。

「一点鎖線」にしたい場合は、「msoLineDashDot」を入力します

「長破線」にしたい場合は、「msoLineLongDash」を入力します。

「長破線」にしたい場合は、「msoLineLongDash」を入力します

「長鎖線」にしたい場合は、「msoLineLongDashDot」を入力します。

「長鎖線」にしたい場合は、「msoLineLongDashDot」を入力します

「長二点鎖線」にしたい場合は、「msoLineLongDashDotDot」を入力します。

「長二点鎖線」にしたい場合は、「msoLineLongDashDotDot」を入力します

というような感じで、実線や点線に設定することができます。

始点の矢印

始点の矢印を設定したい場合は、「.Line.BeginArrowheadStyle」を使います。

それぞれのように、値を入力します。

  • 矢印なし:msoArrowheadNone
  • 矢印:msoArrowheadTriangle
  • 開いた矢印:msoArrowheadOpen
  • 鋭い矢印:msoArrowheadStealth
  • ひし形矢印:msoArrowheadDiamond
  • 円形矢印:msoArrowheadOval

VBAコードは、次のようになります。

Sub TEST10()
  
  '始点の矢印の種類
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .Weight = 4
    .BeginArrowheadStyle = msoArrowheadNone '矢印なし
    .BeginArrowheadStyle = msoArrowheadTriangle '矢印
    .BeginArrowheadStyle = msoArrowheadOpen '開いた矢印
    .BeginArrowheadStyle = msoArrowheadStealth '鋭い矢印
    .BeginArrowheadStyle = msoArrowheadDiamond 'ひし形矢印
    .BeginArrowheadStyle = msoArrowheadOval '円形矢印
  End With
  
End Sub

「矢印なし」にしたい場合は、「msoArrowheadNone」を入力します。

「矢印なし」にしたい場合は、「msoArrowheadNone」を入力します

「矢印」にしたい場合は、「msoArrowheadTriangle」を入力します。

「矢印」にしたい場合は、「msoArrowheadTriangle」を入力します

「開いた矢印」にしたい場合は、「msoArrowheadOpen」を入力します。

「開いた矢印」にしたい場合は、「msoArrowheadOpen」を入力します

「鋭い矢印」にしたい場合は、「msoArrowheadStealth」を入力します。

「鋭い矢印」にしたい場合は、「msoArrowheadStealth」を入力します

「ひし形矢印」にしたい場合は、「msoArrowheadDiamond」を入力します。

「ひし形矢印」にしたい場合は、「msoArrowheadDiamond」を入力します

「円形矢印」にしたい場合は、「msoArrowheadOval」を入力します。

「円形矢印」にしたい場合は、「msoArrowheadOval」を入力します

というような感じで、始点の矢印を設定することができます。

終点の矢印

終点の矢印を設定したい場合は、「.Line.EndArrowheadStyle」を使います。

入力する値は、始点の場合と同じで、次のようになります。

  • 矢印なし:msoArrowheadNone
  • 矢印:msoArrowheadTriangle
  • 開いた矢印:msoArrowheadOpen
  • 鋭い矢印:msoArrowheadStealth
  • ひし形矢印:msoArrowheadDiamond
  • 円形矢印:msoArrowheadOval

VBAコードは、次のようになります。

Sub TEST11()
  
  '終点の矢印の種類
  With ActiveSheet.Shapes.AddLine(10, 50, 200, 50).Line
    .Weight = 4
    .EndArrowheadStyle = msoArrowheadNone '矢印なし
    .EndArrowheadStyle = msoArrowheadTriangle '矢印
    .EndArrowheadStyle = msoArrowheadOpen '開いた矢印
    .EndArrowheadStyle = msoArrowheadStealth '鋭い矢印
    .EndArrowheadStyle = msoArrowheadDiamond 'ひし形矢印
    .EndArrowheadStyle = msoArrowheadOval '円形矢印
  End With
    
End Sub

「矢印なし」にしたい場合は、「msoArrowheadNone」を入力します。

「矢印なし」にしたい場合は、「msoArrowheadNone」を入力します

「矢印」にしたい場合は、「msoArrowheadTriangle」を入力します。

「矢印」にしたい場合は、「msoArrowheadTriangle」を入力します

「開いた矢印」にしたい場合は、「msoArrowheadOpen」を入力します。

「開いた矢印」にしたい場合は、「msoArrowheadOpen」を入力します

「鋭い矢印」にしたい場合は、「msoArrowheadStealth」を入力します。

「鋭い矢印」にしたい場合は、「msoArrowheadStealth」を入力します

「ひし形矢印」にしたい場合は、「msoArrowheadDiamond」を入力します。

「ひし形矢印」にしたい場合は、「msoArrowheadDiamond」を入力します

「円形矢印」にしたい場合は、「msoArrowheadOval」を入力します。

「円形矢印」にしたい場合は、「msoArrowheadOval」を入力します

というような感じで、終点の矢印を設定することができます。

ちょっと応用

ちょっと応用で、「選択したセル範囲に矢印を引く」というのと、「同じ値を線でつなげる」というのをやってみます。

選択したセル範囲に矢印を引く

選択したセル範囲に矢印を引くVBAコードは、次のようになります。

Sub TEST12()
  
  Dim X1, Y1, X2, Y2
  X1 = Selection.Left '始点の横
  Y1 = Selection.Top + Selection.Height / 2 '始点の縦
  X2 = Selection.Left + Selection.Width '終点の横
  Y2 = Selection.Top + Selection.Height / 2 '終点の縦
  
  With ActiveSheet.Shapes.AddLine(X1, Y1, X2, Y2).Line
    .Weight = 3 '太さ
    .ForeColor.RGB = RGB(255, 0, 0) '赤
    .EndArrowheadStyle = msoArrowheadTriangle '終点を三角
  End With
    
End Sub

セル範囲を選択して、実行します。

セル範囲を選択して、実行します

選択したセル範囲に、矢印を引くことができます。

選択したセル範囲に、矢印を引くことができます

選択したセル範囲に、矢印を引くことができました。

ショートカットキーに登録して、すぐに実行できるようにするとさらに便利です。

同じ値を線でつなげる

同じ値を線でつなげるVBAコードは、次のようになります。

Sub TEST13()
  
  Dim X1, Y1, X2, Y2
  
  For i = 1 To 5
    For j = 1 To 5
      If Cells(i, 1) = Cells(j, 3) Then
        X1 = Cells(i, 1).Left + Cells(i, 1).Width '始点の横
        Y1 = Cells(i, 1).Top + Cells(i, 1).Height / 2 '始点の縦
        X2 = Cells(j, 3).Left '終点の横
        Y2 = Cells(j, 3).Top + Cells(j, 3).Height / 2 '終点の縦
        ActiveSheet.Shapes.AddLine X1, Y1, X2, Y2 '線を引く
      End If
    Next
  Next
  
End Sub

次のセルに入力された値のうち、同じ値を線でつなげます。

同じ値を線でつなげます

実行すると、同じ値を線でつなぐことができます。

同じ値を線でつなげました

同じ値を線でつなげることができました。

おわりに

この記事では、線や矢印を引く方法について、ご紹介しました。

線や矢印を引くには、「.Shapes.AddLine」を使うとできます。

矢印を引くには、線を引いたあとに、線のスタイルを変更することでできます。

線のスタイルには、線の太さや色、一本線や二重線、実線や点線、始点と終点の矢印などがあります。

線や矢印を自由に引けるようにしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す