【VBA】アクティブセルの参照関係を自動で表示する

エクセルVBAで使用するコードの備忘録。選択されたセルの参照関係(トレース矢印)を自動で表示するコード。

スポンサーリンク

参照関係(トレース矢印)の表示

トレース矢印は表示したいセルのRangeオブジェクトの「ShowDependents」メソッド、「ShowPrecedents」メソッドを使うと表示することが可能です(詳細はこちらを参照)。

トレース矢印は一同表示させると自動で消えてはくれないため、選択セルのトレース矢印だけを表示させるにはその都度消去してやる必要があります。表示されているトレース矢印を削除するには、Worksheetオブジェクトの「ClearArrows」メソッドを使用します。

Worksheet_SelectionChange関数

セルが選択されるたびに参照関係(トレース矢印)を更新するには、ワークシート上で選択セルが変更されたときに発生する「SelectionChange」イベントを補足する「Worksheet_SelectionChange」関数を使用します。この関数を使用する際の注意点は、関数の表記場所です。必ず標準モジュールではなくワークシートに記入するようにしましょう(関数の記入場所についてはこちらをご参照ください)。

サンプルコード

下記のサンプルコードでは、ワークシート上で選択されているセルが変更されると自動で選択セルの参照関係(トレース矢印)が表示されるようにしてあります。

Public Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    '--- トレース矢印を消去 ---'
    Target.Parent.ClearArrows
    
    '--- 選択セルに数式が含まれる時のみ表示 ---'
    If (Target.HasFormula = True) Then
        Call Target.ShowPrecedents
        Call Target.ShowDependents
    End If
    
End Sub