プロが教えるわが家の防犯対策術!

VBAにてグラフ作成をしています。
現在Office365にて作成していますが、Office2016でも使えるようにしたいです。

VBAの内容としては、データファイルを開き、2種類のグラフ(散布図・ヒストグラム)を
作成中です。
今ヒストグラムで下記画像のようなグラフにしたくマクロ記録を参考に下記コードを実行させましたが
エラーはしませんがヒストグラムに反映いたしません。
また表示形式の小数点以下桁数を1桁にしたいのですがマクロ記録で出てきません。
そもそもVBAでは対応できないのでしょうか?
ご教示お願いいたします。

説明不足でしたら補足いたします。
よろしくお願いします。

ActiveSheet.ChartObjects("グラフ 2").Activate
ActiveSheet.Axes(xlCategory).Select      
ActiveSheet.ChartGroups(1).BinsType = xlBinsTypeBinCount
ActiveSheet.ChartGroups(1).BinsCountValue = 11
ActiveSheet.ChartGroups(1).BinsOverflowEnabled = True
ActiveSheet.ChartGroups(1).BinsOverflowValue = 0

「VBAにてヒストグラム作成にて困っていま」の質問画像

質問者からの補足コメント

  • うーん・・・

    画像がわかりにくいので、補足いたします。
    ヒストグラムのX軸の書式設定
    軸オプション
    ・ビンの数 11
    ・ビンのオーバーフロー 2.0
    ・ビンのアンダーフロー 0
    表示形式  
    ・数値
    ・小数点以下の桁数 1
    上記をマクロ記録しことをVBAで実行したのですが、エラーしませんがグラフに反映されません。
    またX軸の表示形式がマクロ記録されません。

      補足日時:2020/05/09 09:47
  • HAPPY

    googoo900さん
    昨日今VBAを使用する環境(Oiffce2016)にて試し、
    下記のコードにてヒストグラムを仕様通り作成することができました。
    ご教示本当ありがとうございました。

    ActiveSheet.ChartObjects("グラフ2").Activate
    ActiveChart.Axes(xlCategory).Select
    ActiveChart.Axes(xlCategory).TickLabels.NumberFormatLocal = "0.0"

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/05/12 04:29

A 回答 (4件)

No.1です。



No.2の返信欄に記載されたコードの1~3行目(桁数変更)を最下部に移動させたらどうでしょうか?
4行目以降は質問者さんが作成されたものなので、成功実績がありうまくいくかと思います。


※こちらではグラフの種類が違うためか、エラーになってしまい確認できていません。
この回答への補足あり
    • good
    • 0
この回答へのお礼

googoo900さん
ご回答ありがとうございます。
Oiffce 365で下記のように修正しました。
しかし少数点しか反映しませんでした。
まだExcel2016で実施していないので、一度確認してみます。
献身的に教示いただきありがとうございます。


修正コード
ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartGroups(1).BinsType = xlBinsTypeBinCount
ActiveChart.ChartGroups(1).BinsCountValue = 11

ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartGroups(1).BinsOverflowEnabled = True
ActiveChart.ChartGroups(1).BinsOverflowValue = 2

ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartGroups(1).BinsUnderflowEnabled = True
ActiveChart.ChartGroups(1).BinsUnderflowValue = 0

ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormatLocal = "0.0_ "

お礼日時:2020/05/11 04:24

こんばんは、


現在も、ヒストグラムチャートについてExcel2016VBAは、完全にフォローしていない可能性が高いです。

>上記をマクロ記録しことをVBAで実行したのですが、エラーしませんがグラフに反映されません。
>またX軸の表示形式がマクロ記録されません。
同様の事象は、対応していないのが原因の可能性があります。
しかし、すでに(または、次の年次)Excel2016のアップデートで対応されているかも知れません。(期待は出来ません)

Excel組み込みのヒストグラムは、動的なソースデータにはあまり適していないと思いますし
Excel2016ヒストグラムについては、不具合もあるようなので、
VBAでビンを生成し、データを数式(またはVBA)で集計してから、
標準の縦棒グラフをプロットする方法などを検討した方が良いかも知れません。

また、Excel2016以降のExcelでないと検証も出来ないので、難しいです。
MSの専門的なサイトへあげて見るのは、いかがでしょう。
https://social.msdn.microsoft.com/Forums/ja-JP/h …
    • good
    • 0
この回答へのお礼

Qchan1962さん
ご回答ありがとうございます。
ヒストグラムはExcel組み込みでは適していないのですね。
VBAの知見がなく色々勉強なりました。
自分のできる範囲で、引き続き進めていきます。
ありがとうございます。

お礼日時:2020/05/11 04:33

NO.1です。



>3行目以下がエラーになりませんがグラフに反映されません。

1~2行目をもう一度繰り返してはいかがでしょうか?
具体的には、『1~2行目をコピーして、binsが記述されている行の上に貼り付ける』です。

あまり美しくありませんが、暫定対応ということで。
    • good
    • 1
この回答へのお礼

googoo900さん
回答ありがとうございます。
下記のように実施しましたが、少数点しか反映されませんでした。
Binsのコードに間違いがあるのでしょうか?

ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormatLocal = "0.0_ "

ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartGroups(1).BinsType = xlBinsTypeBinCount
ActiveChart.ChartGroups(1).BinsCountValue = 11

ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartGroups(1).BinsOverflowEnabled = True
ActiveChart.ChartGroups(1).BinsOverflowValue = 2

ActiveSheet.ChartObjects("?O???t 2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartGroups(1).BinsUnderflowEnabled = True
ActiveChart.ChartGroups(1).BinsUnderflowValue = 0

お礼日時:2020/05/10 20:18

質問文のマクロに対して、以下のようにしてみてください。



2行目を修正  ActiveChart.Axes(xlCategory).Select
3行目に追加  Selection.TickLabels.NumberFormatLocal = "0.0_ "
    • good
    • 0
この回答へのお礼

googoo900さん
ご教示ありがとうございます。
Selection.TickLabels.NumberFormatLocal = "0.0_ " を追加したら、表示形式の小数点以下桁数を
1桁にできました。
しかし3行目以下がエラーになりませんがグラフに反映されません。
コードに問題点があるのでしょうか?

記載コード

ActiveSheet.ChartObjects("グラフ 2").Activate
ActiveSheet.Axes(xlCategory).Select  
Selection.TickLabels.NumberFormatLocal = "0.0_ "
ActiveChart.ChartGroups(1).BinsType = xlBinsTypeBinCount
ActiveChart.ChartGroups(1).BinsCountValue = 11
ActiveChart.ChartGroups(1).BinsOverflowEnabled = True
ActiveChart.ChartGroups(1).BinsOverflowValue = 2
ActiveChart.ChartGroups(1).BinsUnderflowEnabled = True
ActiveChart.ChartGroups(1).BinsUnderflowValue = 0

お礼日時:2020/05/09 21:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています