Excelで作成したグラフにインタラクティブな動作を加えることで、より直感的でわかりやすい資料を作成できます。本記事では、グラフのバーをクリックしたときに、対応するセルの値をメッセージボックスに表示する方法を、VBAコード付きで丁寧にご紹介いたします。
目次
サンプルコード:バークリックで対応データを表示
以下は、ユーザーがグラフ内のバーをクリックしたときに、対応するセルの隣にある値をメッセージとして表示するコード例です。
Private Sub Chart_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 dataRange As Range
' クリックされた要素を取得
Me.GetChartElement x, y, elementID, seriesID, pointIndex
' 対象が系列(バー)の場合のみ処理
If elementID = xlSeries Then
' 系列の参照元セル範囲を取得
Set dataRange = Range(Split(Me.SeriesCollection(seriesID).Formula, ",")(2))
' 対応するセルの右隣の値をメッセージボックスで表示
MsgBox dataRange.Cells(pointIndex).Offset(0, 1).Value
End If
End Sub
コードの解説
Chart_MouseDown
イベントは、グラフ上でマウスクリックが行われたときに実行されます。GetChartElement
メソッドを使って、**クリックされた要素の種類(elementID)や系列番号(seriesID)、ポイント番号(pointIndex)**を取得します。xlSeries
であることを確認し、該当系列のFormula
から元のセル範囲を特定します。- そのセル範囲から
pointIndex
番目のセルを取得し、その右隣の値(Offset(0,1))を MsgBox に表示しています。
応用のヒント
Offset(0,1)
の部分を変えることで、「2列右」や「1行下」の値を参照するなど、表示する内容をカスタマイズできます。- メッセージボックスの代わりに
UserForm
を表示したり、セルの色を変更する
などの処理にも応用可能です。
まとめ
Excel VBA を活用すれば、グラフを「見るだけ」から「触って動く」ものへと進化させることができます。今回ご紹介したように、クリック操作に応じたメッセージ表示を加えることで、より視覚的かつインタラクティブなデータ表現が可能になります。
報告書やダッシュボード、分析ツールとしてのExcel活用に、ぜひ取り入れてみてはいかがでしょうか。