トップページへ

VBAでセルの罫線に描画する方法

小粋空間 » Programming Language » VB/VBA » VBAでセルの罫線に描画する方法

VBAでセルの罫線に描画する方法を紹介します。

VBAでセルの罫線に描画する

1.問題点

VBAでセルの罫線上に、冒頭のスクリーンショットのように矢印を描画する作業が発生しました。

描画する際に分かっている情報は、セルの番地ではなく、開始点および終点の行と列の番号(「3,2」や「3,5」など)ですが、この情報を元に描画する方法が分かりません。

ということで、セルの罫線に描画する方法を紹介します。

2.セルの罫線に描画する

描画するサンプルを下記に示します。

Sub Test()
    Dim start_cell As String
    Dim end_cell As String
    Dim myRange As Range
 
    start_cell = Cells(3, 2).Address
    end_cell = Cells(3, 5).Address
    Set myRange = Range(start_cell, end_cell)
 
    With ActiveSheet.Shapes.AddLine(myRange.Left, myRange.Top, myRange.Left + myRange.Width, myRange.Top).Line
       .ForeColor.RGB = vbBlack
       .EndArrowheadStyle = msoArrowheadTriangle
    End With
End Sub

以下、コードの解説です。

開始点となるセルの番地をCellsプロパティで取得します。セルの番地が予め分かっていればこの行は不要です。

start_cell = Cells(3, 2).Address

同様に、終点となるセルの番地を取得します。

end_cell = Cells(3, 5).Address

Rangeプロパティで2つのセルの範囲を取得します。

Set myRange = Range(start_cell, end_cell)

下のように、Cellsプロパティとあわせて1行にまとめることもできます。

Set myRange = Range(Cells(3, 2), Cells(3, 5))

最後にShapes.AddLineメソッドで線を描画します。

With ActiveSheet.Shapes.AddLine(myRange.Left, myRange.Top, myRange.Left + myRange.Width, myRange.Top).Line
   .ForeColor.RGB = vbBlack
   .EndArrowheadStyle = msoArrowheadTriangle
End With

AddLineメソッドのパラメータは次のとおりです。

上記のサンプルでは、各パラメータに次のようにあてはめています。

また、

は、線の色および終点のスタイル(矢印)を指定しています。

これで冒頭のスクリーンショットのような線を描画することができます。

点線の場合はAddLineメソッドに下記を追加します。

.DashStyle = msoLineDash

« 前の記事へ

次の記事へ »

トップページへ