- 締切済み
マクロでグラフ作成
マクロを使って、各シート(ひな型は同じでデータが各々違う)の特定の部分のデータから折れ線グラフを書こうとしています。 しかし、どのシートでマクロを実行しても、最初にマクロを記録したシートのデータからグラフができてしまいます。 マクロの保存法が悪いのでしょうか? 相対参照で記録、なども試してみましたが駄目でした。 どなたかお分かりになる方、助けてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 埋め込み型グラフですね。 たとえば、記録マクロを取ると以下のようになります。 Sub Macro1() Range("A1:B11").Select '* Charts.Add ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B11"), 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 ------------------------------------------------------------- 記録マクロを以下のように加工すると、どこでも使えるようになります。 ------------------------------------------------------------- Sub MyMacro() Dim r As Range Dim ShName As String Set r = Selection 'マウスで選択 If r Is Nothing Then Exit Sub '** ShName = ActiveSheet.Name '** Charts.Add ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=r, PlotBy _ :=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:=ShName With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With End Sub *の部分のポイントが分かったら試してみてください。 ただし、グラフマクロだけは、バージョンによって記録マクロの内容が大きく変わることがあります。なお、本来のマクロはこのような書き方はあまりしません。あくまでも、記録マクロを手直ししたという前提です。
- imogasi
- ベストアンサー率27% (4737/17069)
グラフを書くエクセルVBAは、マクロの記録で、骨子はわかります。 しかし多数のグラフを書くということは、上記マクロの記録のコードで、データ範囲はVBAで変化させなければなりません。こんなことは、言わずもがなのレベルなのかどうか判らないのが、質問コーナーの悲しさです。 この辺をどのようにコードしているか、この質問の補足欄で、グラフの1,2例のコードを書いてみたらどうでしょう。 ーー 「VBA、VBのコードの質問は、コードを書いて質問」