
他のセルの値を転記し、複数の折れ線グラフを1つのエリアに作成するというマクロを作りたいと思っています。マクロについて詳しくないので、手動作成の様子をマクロに記録させ、それを少し手直ししました。しかしどうしてもエラーの出るところがあります。このような質問の方法でいいのか不安ですが、もしお分かりになれば悪いところをお教えいただけないでしょうか。
以下、エラーの出るマクロです。
Sub 分析用グラフまとめて()
'まず必要な値を計算式で持ってくる(とりあえず4行目だけ)
Sheets("分析").Select
Range("ac4").Formula = "='分析'!g4"
Range("ad4").Formula = "='分析'!l4"
Range("ae4").Formula = "='分析'!q4"
Range("af4").Formula = "='分析'!s4"
'次に上記計算式を750行目までオートフィルコピー
Sheets("分析").Select
Range("ac4:af4").Select
Selection.AutoFill Destination:=Range("ac4:af750"), Type:=xlFillDefault
Range("ac4:af750").Select
'A6のデータを削除(1900年01月00日となり、グラフが変になるため)
Range("A6").Clear
'ac6~ae6のデータを削除(0という数値が入っているため)
Range("ac6:af6").Clear
'A列の表示形式を日付にする
Range("A:A").Select
Selection.NumberFormatLocal = "yyyy/mm/dd"
'グラフ作成
Sheets("分析").Select
With ActiveSheet.ChartObjects.Add(1600, 1540, 2400, 210).Chart
.ChartType = xlLine
.SetSourceData Source:=Range("ac6:af750")
End With
'グラフを選択
ActiveSheet.ChartObjects("グラフ 8").Activate
ActiveChart.PlotArea.Select
'系列名、X(横、項目)軸ラベル指定
With ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Name = "='分析'!$ac$4"
ActiveChart.SeriesCollection(1).XValues = "='分析'!$A$6:$A$750"
ActiveChart.SeriesCollection(2).Name = "='分析'!$ad$4"
ActiveChart.SeriesCollection(2).XValues = "='分析'!$A$6:$A$750"
ActiveChart.SeriesCollection(3).Name = "='分析'!$ae$4"
ActiveChart.SeriesCollection(3).XValues = "='分析'!$A$6:$A$750"
ActiveChart.SeriesCollection(4).Name = "='分析'!$af$4" '<===ここが黄色く反転して動作が止まります
ActiveChart.SeriesCollection(4).XValues = "='分析'!$A$6:$A$750"
'凡例をグラフに重ねず表示
ActiveChart.Legend.Select
ActiveChart.Legend.IncludeInLayout = False
End With
End Sub
No.1ベストアンサー
- 回答日時:
エラーの原因は、データ系列が3つしか作成されていないのに、4つ目の系列を修正しようとしているためです。
修正をしましたので、とりあえずエラーなく実行できると思います。
◆修正箇所
.SetSourceData Source:=Range("ac6:af750") をXValuesも含めて指定しています。
そのあとのXValuesの指定はダブりと思いますが、そのままにしています。
繰り返しマクロ実行するとグラフ名が連番で変更されるので、毎回作成したグラフを選択できるようにした。
◆マクロ
Sub 分析用グラフまとめて_改()
Dim myName As String '<==追加
'まず必要な値を計算式で持ってくる(とりあえず4行目だけ)
Sheets("分析").Select
Range("ac4").Formula = "='分析'!g4"
Range("ad4").Formula = "='分析'!l4"
Range("ae4").Formula = "='分析'!q4"
Range("af4").Formula = "='分析'!s4"
'次に上記計算式を750行目までオートフィルコピー
Sheets("分析").Select
Range("ac4:af4").Select
Selection.AutoFill Destination:=Range("ac4:af75"), Type:=xlFillDefault
Range("ac4:af75").Select
'A6のデータを削除(1900年01月00日となり、グラフが変になるため)
Range("A6").Clear
'ac6~ae6のデータを削除(0という数値が入っているため)
Range("ac6:af6").Clear
'A列の表示形式を日付にする
Range("A:A").Select
Selection.NumberFormatLocal = "yyyy/mm/dd"
'グラフ作成
Sheets("分析").Select
With ActiveSheet.ChartObjects.Add(1600, 1540, 2400, 210).Chart
.ChartType = xlLine
.SetSourceData Source:=Range("$A$6:$A$75,ac6:af75") '<==修正 XValuesも含めた
myName = Mid(.Name, Len(ActiveSheet.Name) + 2) '<==追加 グラフ名を定義
End With
'グラフを選択
'ActiveSheet.ChartObjects("グラフ 5").Activate '<==修正前のもの
ActiveSheet.ChartObjects(myName).Activate '<==修正 マクロで作成したグラフを選択
ActiveChart.PlotArea.Select
'系列名、X(横、項目)軸ラベル指定
With ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Name = "='分析'!$ac$4"
ActiveChart.SeriesCollection(1).XValues = "='分析'!$A$6:$A$75"
ActiveChart.SeriesCollection(2).Name = "='分析'!$ad$4"
ActiveChart.SeriesCollection(2).XValues = "='分析'!$A$6:$A$75"
ActiveChart.SeriesCollection(3).Name = "='分析'!$ae$4"
ActiveChart.SeriesCollection(3).XValues = "='分析'!$A$6:$A$75"
ActiveChart.SeriesCollection(4).Name = "='分析'!$af$4" '<===ここが黄色く反転して動作が止まります
ActiveChart.SeriesCollection(4).XValues = "='分析'!$A$6:$A$75"
'凡例をグラフに重ねず表示
ActiveChart.Legend.Select
ActiveChart.Legend.IncludeInLayout = False
End With
End Sub
マクロを修正してくださってありがとうございます!
私は存在しないデータ系列の修正をしようとしていたのですね(^^;
グラフのもととなるデータの範囲指定を変更するとエラーが出なくなり、いろんなことが一気に進みました!
修正してくださったマクロですが、恥ずかしながら「Dim myName As String」などの使い方が分からず、あとで自分で手を加えられなくなりそうでしたので、今回はグラフの範囲指定を変更することで対処しました。ですのでマクロがかなり長くなり、見づらくなっています。これを機会に「Dim myName As String」といったものを使えるようにしていこうかと考えているところです。きっかけを与えてくださってありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
【マクロ】変数に入れるコード...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
【マクロ】左のブックと右のブ...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
Office2021のエクセルで米国株...
-
他のシートの検索
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ画像あり】❶1つの条件...
-
エクセルシートの見出しの文字...
-
空白のはずがSUBTOTAL関数でカ...
-
【マクロ】【画像あり】ファイ...
-
5単位で繰り上げしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報