HOME > 即効テクニック > Excel VBA > グラフ関連のテクニック > Chartの操作−表示データのスクロール

即効テクニック

グラフ関連のテクニック

Chartの操作−表示データのスクロール

(Excel 97/2000)

折れ線グラフに表示する項目軸が多く、グラフが大きくなってしまう場合などにはチャートを左右にスクロール出来ると便利です。

サンプルではSetSourceDataメソッドを用いてソースデータを変更します。
 
(前提):折れ線グラフ作成が可能なデータ(セルA1から連続するデータ範囲)
          コマンドボタン、スピンボタン
'======宣言セクション======
Dim Rng As Range
Dim RngTitle As Range, RngData As Range
Dim ChartObj As ChartObject
Const cntData As Integer = 10 '表示データ行数

'====== チャート作成 ======
Private Sub CommandButton1_Click()

'シート上のチャートを削除
ActiveSheet.ChartObjects.Delete

Dim rngForChart As Range
Dim L As Double, T As Double, W As Double, H As Double
Dim Msg As String

ActiveCell.Activate'コマンドボタンからの実行時には必要

'データ範囲確定
Set Rng = Range("A1").CurrentRegion
Set RngTitle = Rng.Resize(1) 'Rngの一行目(項目行)
Set RngData = Rng.Offset(1).Resize(cntData) 'データ範囲

'チャートの貼り付け位置確定
Msg = "チャートを作成するセル範囲を指定してください"
Set rngForChart = _
    Application.InputBox(Msg, "セル範囲指定", Type:=8)
With rngForChart
L = .Left: T = .Top: W = .Width: H = .Height
End With

'位置を指定してチャートの作成
Set ChartObj = ActiveSheet.ChartObjects.Add(L, T, W, H)

With ChartObj.Chart
.ChartType = xlLine '折れ線グラフを指定
'項目行とデータ範囲を結合してソースデータをセット
.SetSourceData Source:=Union(RngTitle, RngData), _
    PlotBy:=xlColumns
End With

With SpinButton1 ' スピンボタンの初期値を設定
.Max = Rng.Rows.Count - 10
.Min = 1
.SmallChange = 1
.Value = 1
End With

End Sub


'====== ソースデータ変更(表示データスクロール) ======
Private Sub SpinButton1_Change()

'コード改定時などプロジェクトがリセットされている場合に
'オブジェクト変数を再設定
If ChartObj Is Nothing Then
    Set ChartObj = ActiveSheet.ChartObjects(1)
    Set Rng = Range("A1").CurrentRegion
    Set RngTitle = Rng.Resize(1)
End If
'スピンボタンの現在値を基準にデータ範囲を変更
Set RngData = Rng.Resize(cntData).Offset(SpinButton1.Value)
ChartObj.Chart.SetSourceData Union(RngTitle, RngData)
ChartObj.Chart.Refresh

End Sub