Chartの操作−表示データのスクロール
 折れ線グラフに表示する項目軸が多く、グラフが大きくなってしまう場合など
 にはチャートを左右にスクロール出来ると便利です。
 
 サンプルでは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
 

Excel97,2000



戻る


Excel Word Access VBA! モーグ