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