グラフを動的にするために VBA は必要ありません。データとともに拡大および縮小する動的な名前付き範囲を作成するだけです。グラフの VBA は、コードに負担をかけることなく、その名前付き範囲を参照できます。しかし、VBA がまったく必要ない場合もあります。ダイナミック レンジで定義されたチャートは、瞬時に更新されます。コードは必要ありません。
グラフ ラベルの範囲名と数式:
chtLabels =Events!A2:Index(Events!$A:$A,counta(Events!$A:$A))
列 B の範囲名と数式
chtBegin =offset(chtlabels,0,1)
列 D の範囲と計算式
chtDuration =offest(chtlabels,0,3)
データ ソースを編集し、固定セル範囲の代わりに、名前付き範囲を次の形式で入力します。
=Events!*RangeName*
系列値とグラフの項目軸にそれぞれの範囲名を指定する必要があります。
注: ダイナミック レンジ名をチャートのソースとして指定する場合は、ファイル名またはシート名のいずれかを範囲名の参照に含める必要があります。ダイアログを閉じて再度開くと、入力内容が Excel によって自動的に形式に変換されることがわかります。[Filename]RangeName
注 2: ダイナミック レンジ名を作成するためのさまざまな数式オプションが多数あります。この場合、列 A のインデックスを使用し、セルをカウントして最後に入力されたセルを特定します。これは、列 A のすべてのセルにテキストがある場合にのみ機能します。データの列 A にギャップがある場合 (そうではないと思います)、別の数式を適用して範囲を決定できます。