これは私にとってはうまくいきました。いくつかのメモ:
Worksheet
このコードはモジュールに配置する必要があります
- チャートを更新するには、
name
列の名前 (「xyz」、「abc」など)をクリックするだけです。
- チャートが存在しない場合は、最初にチャートを作成してから、同じチャートを更新します。
コードは次のとおりです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
UpdateChart Target
End If
End Sub
Sub UpdateChart(name As Range)
Dim startRow As Integer, lastRow As Integer
Dim namerng As Range, data As Range, applechart As ChartObject
Set namerng = Range("A1:A" & Range("A1").End(xlDown).Row)
startRow = WorksheetFunction.Match(name.Value, namerng, 0)
lastRow = startRow + WorksheetFunction.CountIf(namerng, name.Value) - 1
On Error Resume Next
Set applechart = ActiveSheet.ChartObjects("AppleChart")
Set data = Range("B" & startRow & ":C" & lastRow)
If Not applechart Is Nothing Then
applechart.Activate
ActiveChart.SetSourceData Source:=data
Else
ActiveSheet.Shapes.AddChart.Select
ActiveSheet.ChartObjects(1).name = "AppleChart"
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=data
End If
End Sub
編集:Excelでの設定方法
- Excel で
ALT
+を押しF11
ます。これにより、VBA エディターが開きます
- 左側のプロジェクト ウィンドウで、データが保持されているワークシート (Sheet1 など) をクリックします。
- 左側のドロップダウンで選択
Worksheet
- 右側のドロップダウンで選択
SelectionChange
- コードを切り取って貼り付ける
注 - データは列 A から始まると想定しています。そうでない場合は、コード内の列参照を自分で修正する必要があります。