グラフ作成時a1:b10の範囲を棒グラフに、
など、セルの範囲を元にしてグラフを作成しますが、
今回、直接、値を使用してみたいと思います。
知恵袋の質問
detail.chiebukuro.yahoo.co.jp
に答えてみた。
#ExcelVBA #MSExcel #Chart #グラフ #マクロ #デバッグ #エクセル
youtu.be
https://youtu.be/UTLJ59dz4IQ
目次
00:00 0.やりたいこと
00:40 1.直接 値を文字列でセットする
02:37 2.As Variantの配列でセット
04:06 配列のサイズに注意 (0 To 2) As Variant
05:50 3.ひながたグラフの値を直接セット
下記、テストで作成したソースコードです。アレンジして使ってみてください。
Option Explicit Sub TEST() Sheets.Add 'シート追加、テストで繰り返すと重なるので落ち着くまで 'グラフ追加 ActiveSheet.Shapes.AddChart2(-1, xlColumnClustered, 50, 50).Select ActiveChart.SetSourceData Source:=Range("$A$1:$B$10") 'ダミー範囲? 'データ範囲を書き換える ※と言っても、直接=文字列じゃなぁ・・・ ActiveChart.FullSeriesCollection(1).Values = "={200, 530, 40}" ActiveChart.FullSeriesCollection(1).XValues = "={""千葉"",""名古屋"",""大阪""}" 'データラベル ActiveChart.FullSeriesCollection(1).Select ActiveChart.FullSeriesCollection(1).ApplyDataLabels ActiveChart.FullSeriesCollection(1).DataLabels.Select Selection.ShowValue = True 'データラベル Range("A1").Select MsgBox "処理終了" End Sub Sub TEST2() Sheets.Add 'シート追加、テストで繰り返すと重なるので落ち着くまで 'グラフ追加 ActiveSheet.Shapes.AddChart2(-1, xlColumnClustered, 50, 50).Select ActiveChart.SetSourceData Source:=Range("$A$1:$B$10") 'ダミー範囲? 'データ範囲を書き換える ※(3) As Variant 系列の数?に注意(10)にすると? Dim dataVALUE(0 To 2) As Variant dataVALUE(0) = 200: dataVALUE(1) = 300: dataVALUE(2) = 100 ActiveChart.FullSeriesCollection(1).Values = dataVALUE Dim dataNAME(0 To 2) As Variant dataNAME(0) = "東京": dataNAME(1) = "千葉": dataNAME(2) = "神奈川" ActiveChart.FullSeriesCollection(1).XValues = dataNAME 'データラベル ActiveChart.FullSeriesCollection(1).Select ActiveChart.FullSeriesCollection(1).ApplyDataLabels ActiveChart.FullSeriesCollection(1).DataLabels.Select Selection.ShowValue = True 'データラベル Range("A1").Select MsgBox "処理終了" End Sub 'ひながたグラフの範囲だけを変更するテスト Sub test3() 'アクティブなグラフの系列、値を変更するテスト 'データ範囲を書き換える ※(3) As Variant 系列の数?に注意(10)にすると? Dim dataVALUE(0 To 3) As Variant dataVALUE(0) = 100: dataVALUE(1) = 300: dataVALUE(2) = 100 dataVALUE(3) = 1500: ActiveChart.FullSeriesCollection(1).Values = dataVALUE Dim dataNAME(0 To 3) As Variant dataNAME(0) = "東京": dataNAME(1) = "千葉": dataNAME(2) = "神奈川" dataNAME(3) = "北海道": ActiveChart.FullSeriesCollection(1).XValues = dataNAME End Sub
テストで作成したソースコードです。アレンジして使ってみてください。
解決のヒントとなれば幸いです。