- ベストアンサー
Excelで自動的にグラフを作成する方法
- Excelでユーザーフォーム画面でX軸とY軸などを選択することで自動で目的のグラフを作成できるマクロの組み方を教えて下さい!
- Y軸の系列は複数あり、間隔が均等なのではじめのY軸系列と系列同士の間隔数を指定すると自動で複数の系列が選択されたグラフが作成される。
- フォームにはX軸選択、Y軸選択(第一系列のみ)、Y軸系列数、系列(空列)間隔、作成ボタン、キャンセルボタンがあります。選択範囲が1行目から始まらない場合でも対応しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
つい先ほど、補足に気付きました。 もう遅いかもしれませんが、書き殴ってみました。 Private Sub CommandButton1_Click() Dim GRange As String Dim LastRow As Long, LastCol As Long ActiveSheet.ChartObjects.Delete LastRow = Cells(Rows.Count, 1).End(xlUp).Row LastCol = Cells(1, Columns.Count).End(xlToLeft).Column GRange = Range(Cells(1, TextBox1), Cells(LastRow, TextBox1)).Address For i = 0 To TextBox3 - 1 If TextBox2 + i * TextBox4 > LastCol Then Exit For GRange = GRange & "," & Range(Cells(1, TextBox2 + i * TextBox4), Cells(LastRow, TextBox2 + i * TextBox4)).Address Next Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(GRange), PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With End Sub ・X軸選択・・・TextBox1 ・Y軸選択(第一系列のみ)・・・TextBox2 ・Y軸系列数・・・TextBox3 ・系列(空列)間隔・・・TextBox4 ・作成ボタン・・・CommandButton1 テキストボックスには全て「数字で入力する」ことを想定しています。 上記コードをボタンのクリック時に貼り付けてやってください。 ちなみに、後半のグラフ作成部分は「マクロの記録」ほぼそのままです。 多分、動きます。 難しいモノを使わず、単純に書いたつもりですので、参考になさって下さいませ。
その他の回答 (1)
- tsubuyuki
- ベストアンサー率45% (699/1545)
少々突き放す回答ですが。 > 目的のグラフを作成できるマクロの組み方を まず「マクロの記録」機能で普通にグラフを作るマクロを取り、それを分析・研究しましょう。 Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:D4"), PlotBy:= xlRows ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With こんな感じで取れるはずです。 連続していない範囲を指定すると ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4,D1:D4"), PlotBy:=xlRow こう記録されます。 つまり、このうちの「Source=(範囲)」を変えてやればグラフの範囲が変わるわけです。 あとは、ユーザーフォームで指定した数値をそこに渡してやるだけです。 ココから先は簡単な算数ですので、少し考えてみませんか。 ところで、 > Y軸の系列は複数あり > Y軸の第一列にC列を選択 > C列,G列,K列,O列がY軸に選択 X軸・Y軸の区別は大丈夫ですか?
補足
遅くなりました、すみませんm(__)m マクロ記録で色々と分析にしてみました! しかしながら小生にはVBAによって「Y系列を始めの1系列指定することで規則的に複数列選択する」という点が解決」できません。 ご助言いただけないでしょうか…。