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メソッドのパラメータは次のとおりです。
- 第1パラメータ:開始点のX座標
- 第2パラメータ:開始点のY座標
- 第3パラメータ:終了点のX座標
- 第4パラメータ:終了点のY座標
上記のサンプルでは、各パラメータに次のようにあてはめています。
- 第1パラメータ(開始点のX座標):Rangeプロパティの左端
- 第2パラメータ(開始点のY座標):Rangeプロパティの上端
- 第3パラメータ(終了点のX座標):Rangeプロパティの左端に横幅を加えたもの
- 第4パラメータ(終了点のY座標):Rangeプロパティの上端
また、
- ForeColor.RGB
- EndArrowheadStyle
は、線の色および終点のスタイル(矢印)を指定しています。
これで冒頭のスクリーンショットのような線を描画することができます。
点線の場合はAddLineメソッドに下記を追加します。
.DashStyle = msoLineDash
Posted by yujiro このページの先頭に戻る
トラックバックURL
コメントする
greeting