Excelのグラフとセルを連動させることで、視覚的なデータ把握がよりスムーズになります。本記事では、グラフのバーをクリックしたときに、対応する元データのセルを塗りつぶす方法を、VBAのコードとともにご紹介いたします。
目次
サンプルコード:バーをクリックしてセルに色を付ける
以下のコードでは、グラフのバーをマウスでクリックした際に、対応するセルを赤く塗りつぶす処理を実装しています。
' グラフイベントを有効にするための変数宣言
Private WithEvents targetChart As Chart
' ブックが開かれたときに、最初のグラフを対象として設定
Private Sub Workbook_Open()
Set targetChart = Worksheets(1).ChartObjects(1).Chart
End Sub
' グラフ内をクリックしたときのイベント処理
Private Sub targetChart_MouseDown(ByVal Button As Long, _
ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim elementID As Long, seriesID As Long, pointIndex As Long
Dim sourceRange As Range
' クリックされた要素を特定
ActiveChart.GetChartElement x, y, elementID, seriesID, pointIndex
If elementID = xlSeries Then
' 元データのセル範囲を取得
Set sourceRange = Range(Split(ActiveChart.SeriesCollection(seriesID).Formula, ",")(2))
' 一旦すべての塗りつぶしを解除
sourceRange.Interior.Pattern = xlNone
' 対象セルのみ赤く塗りつぶす
sourceRange.Cells(pointIndex).Interior.Color = RGB(255, 0, 0)
End If
' アクティブセルを元に戻す
ActiveWindow.RangeSelection.Select
End Sub
コードの解説
WithEvents
を使ってグラフのマウスイベントを取得できるようにしています。Workbook_Open
イベントで、ブック起動時に対象のグラフを設定します。GetChartElement
メソッドでクリックされたバーに対応する要素を特定します。- 系列の参照元セルを
Split(..., ",")(2)
で取得し、その範囲を操作対象にします。 - すべてのセルの塗りつぶしを解除したうえで、クリックされたバーに対応するセルのみ赤く塗りつぶします。
注意点
- シート上のグラフ(ChartObject)に限定されます。埋め込みグラフでない場合は別途対応が必要です。
- 元のデータ範囲は「縦方向」に並んでいる想定です。横方向の系列には調整が必要です。
- このコードは ThisWorkbook モジュールに記述し、グラフのクリックイベントを取得できるようにする必要があります。
応用例
- 値に応じて塗りつぶし色を変える
- 対象のセルにコメントを追加する
- 他のセルの書式(太字、枠線など)と連動する
など、クリック操作を活用することで、よりリッチなExcel操作が可能になります。
まとめ
Excel VBAを使えば、グラフとセルを連携させるインタラクティブな機能を簡単に実装できます。本記事でご紹介したような「グラフ操作で対応セルを強調表示する処理」を組み込むことで、視覚的にわかりやすい資料やツールを構築できます。
業務効率化やレポート自動化の第一歩として、ぜひご活用ください。