Chart, ChartObjects, Shapesの使用について質問です。
記録マクロで散布図を作成すると、以下のようになります。
Sub Macro()
ActiveSheet.Shapes.AddChart2(240, xlXYScatterLinesNoMarkers).Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(1).XValues = "=Sheet1!$A$2:$A$6"
ActiveChart.FullSeriesCollection(1).Values = "=Sheet1!$B$2:$B$6"
End Sub
一方mougを参考にすると以下のように書いてます(散布図ではありません)。
Sub Sample2()
ActiveSheet.ChartObjects.Add 30, 50, 300, 200
ActiveSheet.ChartObjects(1).Chart.ChartType = xlColumnClustered
ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=Range("A1:B3")
End Sub
mougではShapesもChartも使わず、ChartObjectsだけです。どうしてですか?
Shapes.Charts=ChartObjectsですか?どうもしっくりしません。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
私は、そんなに難しいことは知りませんが、
ChartObject というのは、ワークシートに貼り付ける(埋め込み)グラフのことで、ワークシートに従属して、それしか作らないからでしょう。
Shapes.AddChart なら、こちらは、グラフシートにするか、シート貼り付けにするか、どちらかに振り分けますという意味ですよね。
その時点では、どちらにも決まっていないはずです。
Shapes というのは、ワークシートのオブジェクトの総称のようなもので、単にそのオブジェクトのコレクションであり、それにAddをつけると、そのひとつ(インスタンス)を呼び出します、というような意味だと思います。
Shapesというコレクションは、97以降だったか、比較的後の時代に現れた統合されたオブジェクトで、当然、グラフを作る場合は、直接呼び出ししたほうが早いから、ChartObject[=ChartObjects(1)] を使うわけです。逆に、グラフシートなら、Charts.Add でしょうね。
Mougの書いた人がどうかは分かりませんが、コードとしては、一種のスタイル(格好)の問題だと思います。回り道の案内図では格好が悪いからだと思います。
ただ、その記録マクロは、Excel 2013で作られたものでしょうから、その内容については詳しくは分かりません。
No.1
- 回答日時:
こんにちは
ほとんどわかってないので、単に、検索してみただけですが・・・
(的外れでしたら、無視してください)
MSDNの説明では、『ChartObject オブジェクトは、Chart オブジェクトのコンテナーとして機能します。』となっています。
また、それぞれのコレクションがChartObjects、Chartsということみたいですね。
https://msdn.microsoft.com/ja-jp/library/office/ …
>mougではShapesもChartも使わず、ChartObjectsだけです
ご提示なさっているコードで
>ActiveSheet.ChartObjects(1).Chart ~~
として、Chartオブジェクトを取得して操作していますので、ChartObjectsだけで全て完結してるわけではないと思います。
一方で、記録のマクロのほうでも
>ActiveChart ~~
としていますので、両方ともChartオブジェクトに対する操作を行っていると言えます。
(実際には、そこからさらにオブジェクトを取得していたりするようですが…)
Chartオブジェクトの指定に際して、どのようなオブジェクト経由で特定しているかが、それぞれのコードで異なるだけではないでしょうか?
(例示のコードでは、操作の内容も違うようですが、それはご質問の趣旨ではないと思いますので)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
Microsoft1Officeの互換ソフト...
-
Excel ピボットテーブルで日付...
-
エクセル関数を教えてください
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
LOOKUP関数を使えばいいのでし...
-
エクセル 白黒印刷で白線を印刷...
-
【関数】先頭だけにある、半角...
-
【関数】適切な文字数の数字を...
-
Excelのチェックボックスの使い...
-
エクセルでの作業計算方法について
-
Excelのpivotについて質問です
-
WPS OFFICEでの縦書きについて
-
時間によってファイル名が変わ...
-
エクセルのセルに同じ大きさの...
-
Aというブックの1というシート...
-
エクセルの順位別一覧表の自動...
-
西暦や和暦の表示をyyyymmdd表...
-
【マクロ】エクセルにかいてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報