![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
他のセルの値を転記し、複数の折れ線グラフを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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Excel(エクセル) excel ピポットテーブルの更新について 1 2022/05/13 16:12
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) 指定の条件に応じたセルの場所に〇印(図形)を描く 2 2022/11/08 15:26
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Excel(エクセル) エクセルのVBAにショートカットキーの割り当て 3 2022/07/13 14:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの表で1年間の曜日を...
-
エクセルでの特別な文字を上に...
-
エクセルでB列でフィルターをか...
-
お世話になります。 Excelを使...
-
エクセルでセルに標準で入力さ...
-
EXCELの質問です 119から足した...
-
UNIQUE関数が使えないバージョ...
-
【マクロ】VLOOKUPにて参照元に...
-
エクセルで会社の従業員のデー...
-
Excel VBについての質問です。
-
【マクロ】アクティブセルにブ...
-
libre 表計算ソフトの計算がう...
-
エクセルの空欄をつめて、次の...
-
エクセルの問題です。絶対値の...
-
Excelで、項目の種類ごとにカウ...
-
【マクロ】アクティブセルの、...
-
exselで最小数で並び替える関数
-
「問題が発生しました」ですと?
-
CELL関数のヘルプ文の意味?
-
エクセルのコメントのデザイン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報