【VBAリファレンス|実務向け】実務で差がつく!Excel VBAで「動的な線」を描画するAddLineメソッド活用術

スポンサーリンク

なぜ、今さらVBAで「線」を引く必要があるのか?

こんにちは、VBA講師です。皆さんはExcelで「進捗管理表」や「ガントチャート」、あるいは「フロー図」を自動生成したことはありますか?通常、Excelの図形描画は手作業で行うものと思われがちですが、実務では「膨大なデータの変化に合わせて、視覚的な線を自動で引き直したい」というニーズが確実に存在します。今回は、ShapeオブジェクトのAddLineメソッドを使い、単なる図形描画を超えた「実務効率化」のヒントをお伝えします。

AddLineメソッドの基本構文を理解する

まずは基本です。線を引くには、Shapesコレクションに対してAddLineメソッドを使用します。構文は以下の通りです。
「ActiveSheet.Shapes.AddLine(左端, 上端, 右端, 下端)」
ここで重要なのは、引数の値はすべて「ポイント」単位であるという点です。セル位置を指定したい場合は、RangeオブジェクトのTopプロパティやLeftプロパティを組み合わせるのが定石です。

実務で活きる「動的な線引き」のテクニック

単に線を引くだけでは面白くありません。現場で重宝されるのは「セルの位置を基準にした動的な線」です。例えば、特定のタスクが完了した際に、その行の開始位置から終了位置まで自動で赤い線を引くコードを考えてみましょう。

具体的なコード例:指定セルを繋ぐ線を自動生成する

以下のコードは、選択したセルから右へ100ポイント分、自動で線を引く実務サンプルです。

Sub DrawProgressLine()
Dim shp As Shape
Dim targetRange As Range
Set targetRange = ActiveCell

‘ セルの位置を基準に線を描画
Set shp = ActiveSheet.Shapes.AddLine( _
targetRange.Left, _
targetRange.Top + targetRange.Height / 2, _
targetRange.Left + 100, _
targetRange.Top + targetRange.Height / 2)

‘ 線のスタイルを調整(視認性を高める)
With shp.Line
.ForeColor.RGB = RGB(255, 0, 0)
.Weight = 2
.DashStyle = msoLineSolid
End With
End Sub

プロが意識する「後始末」と「メンテナンス性」

ここで一つ、ベテランからの重要なアドバイスがあります。それは「一度描いた線をどう管理するか」です。マクロを実行するたびに線が増殖していては、ファイルが重くなる原因になります。実務で使う場合は、描画する前に「以前作成した特定の名前の線」を削除する処理(shp.Delete)を必ず組み込んでください。Nameプロパティに「MyLine」といった固有の名前を付けておけば、ループ処理で簡単に削除できます。

まとめ:視覚化でExcelを「システム」に変える

AddLineメソッドは、単なるお絵描きツールではありません。複雑な表データから「何が重要か」を即座に判断させるための、強力なインターフェースになります。ぜひ皆さんの業務でも、レポートの自動生成や進捗管理の可視化に、この「線を描く技術」を取り入れてみてください。Excelが単なる表計算ソフトから、より直感的な管理ツールへと進化するはずです。

タイトルとURLをコピーしました