三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

Excel VBA グラフの範囲 値を直値にする セルの範囲を使わないで強引に配列に入れた値をセット

グラフ作成時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

テストで作成したソースコードです。アレンジして使ってみてください。
解決のヒントとなれば幸いです。

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)