- ベストアンサー
Excel VBAにて助けてほしいです。
マクロ記述でグラフを挿入を記録したものを、VBAで実行すると 実行時エラー アプリケーション定義またはオブジェクト定義のエラーです。 となります。 Range("C3:O5").Select ActiveSheet.Shapes.AddChart2(201, -4111).Select ActiveChart.SetSourceData Source:=Range("決算!$C$3:$O$5") -4111が認識されないのかわかりません。 集合縦棒2つ 折れ線グラフ1つ 表及び記録されたコードの画像を添付します。 なんとか宜しくお願い致します。
- maesaka0523
- お礼率0% (0/2)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
記録で取得すると確かに-4111になりますね…。 エラー内容は違いますが実行するとエラーになりました。エクセル2013。 以下のように第2軸を別途作成するしかないのかもしれません。 Range("C3:O5").Select ActiveSheet.Shapes.AddChart2(201).Select With ActiveChart.SeriesCollection(3) '3つ目を .AxisGroup = 2 ''第2軸 .ChartType = xlLine '折れ線 End With ActiveChart.SetSourceData Source:=Range("決算!$C$3:$O$5")
その他の回答 (1)
- tanakanono
- ベストアンサー率24% (134/553)
-4111はどこから来たのでしょうか? ここはチャートタイプを入れるところです。チャートタイプ一覧は以下です。 https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlcharttype
関連するQ&A
- エクセルのグラフをマクロで縮小化したい
office2007。Vistaを使用。 エクセルのグラフを縮小するマクロを記録ボタンで作成しました。画面上は縮小されるのですが、「マクロの記録」ではそれが記録されません。office2003で作成したときは zoom を使用したような気がしますが、2007ではどうしたらよいのでしょうか?お教えください。A1B5 にデータが入っています。 Sub Macro1() ' Macro1 Macro Range("B2").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5") ActiveChart.ChartType = xlColumnClustered ActiveChart.Location Where:=xlLocationAsNewSheet ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Sheets("Sheet1").Select Range("A1").Select End Sub
- 締切済み
- オフィス系ソフト
- エクセルでマクロを利用してグラフを作りたい
エクセルでマクロを利用してグラフを作りたいです。 Sheet1で作ったマクロを、Sheet2でも動かす方法を教えてください。 マクロはド素人なのでいつも自動記録で作成しています。 シートはSheet1はSeet23まであり、各シートのデータのある場所は全て同じです。 今回は、Sheet1でマクロを自動記録させて作りました。 Sub Macro1() Range("G1:M6").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$G$1:$M$6") ActiveChart.ChartType = xlLine Range("G22").Select End Sub これをSheet2でも動かしたらSheet2にSheet1のデータを参照してグラフが出来てしまいました。 各シートで動かしたら、そのシート内のデータを読み取り、グラフを作る方法を教えてください。 大変困っています。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- VBAでCharts.Addで追加したShapesの名前をあらかじめ決めたい
下記はグラフ作成を記録したマクロです。 このままでは"グラフ 2"という名前が自動的にきめられるのですが これをあらかじめ"graf1"などの任意の名前にしたいのですが、どうしたらいいでしょうか。 ActiveWindow.SmallScroll ToRight:=13 Range("T1:V11").Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("T1:V11"), PlotBy _ :=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" ActiveChart.Axes(xlValue).Select ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 2").IncrementLeft -882# ActiveSheet.Shapes("グラフ 2").IncrementTop -140.25 ActiveWindow.Visible = False Windows("Book1").Activate Range("L11").Select
- ベストアンサー
- オフィス系ソフト
- Excel VBAグラフチャート名で指定するには再
以前に質問しましたが解決していませんので再度質問します。 ActiveChartではなく、具体的なチャート名で 指定するにはどのように記述すればよいでしょうか。 具体的には、以下のtest()のコードの最後の1行 ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows をActiveChartを使わずに記述するには、 どのように記述すればよいでしょうか。 回答例のように具体的なコードを教えてください。 よろしくお願いします。(Windows10,Excel2016) --------------------------------------- Sub test() ThisWorkbook.Worksheets("Sheet1").Select ThisWorkbook.Worksheets("Sheet1").Range("A10").Select ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart2(297, xlBarStacked100).Select ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows End Sub --------------------------------------- (注1)test()を実行する前にSheet1シートのセルA1,A2,B1,B2にA,B,75,25の値を入力してから実行してください。 (回答例) --------------------------------------- Sub test() Dim chart_name As String ThisWorkbook.Worksheets("Sheet1").Select ThisWorkbook.Worksheets("Sheet1").Range("A10").Select ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart2(297, xlBarStacked100).Select chart_name = ActiveChart.Name chart_name = Trim(Right(chart_name, Len(chart_name) - Len(ActiveSheet.Name))) ThisWorkbook.Worksheets("Sheet1").ChartObjects(chart_name).SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows End Sub --------------------------------------- (注2)ただし、このコードではエラーになります。 (注3)回答例のようにチャート名を取得するためにActiveChartを使用するのは可です。
- ベストアンサー
- その他(プログラミング・開発)
- エクセルVBAの構文の質問です。
エクセルVBAの構文の質問です。 グラフを作るのに列が固定ではないので記録マクロでは一部変更しなくては成らなくてその変更が上手く行きません、構文を記します。 Range("E11:E42").Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("E11:E42") ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" 上記が記録マクロの構文ですそのRange文をCells文に変えたのが以下です。 Range("Cells(r2, c3), Cells(r3, c3)).Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(r2, c3), Cells(r3, c3)) ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" Range文が2ヶ所有ると思いますが最初の文はOKで2回目のRange文で以下の以下のエラーが出ます。 「'Cells'メソッドは失敗しました。'Global'オブジェクト」 「r2 c2 r3 c3」はそれぞれ変数で上の方でr2=3とかc2=9と言う風にセル位置を与えています どちら様か当方の悩みを解決してください、宜しくお願い致します。
- ベストアンサー
- Visual Basic
- Excel VBA With ~ End With
Excel VBA With ~ End Withを使わずに記述するには Sheet1シートのセルA1,A2,B1,B2にA,B,75,25の値を入力して、 Sub test1() With ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart.Chart .ChartType = xlBarStacked100 .SetSourceData Source:=Sheets("Sheet1").Range("A1:B2"), PlotBy:=xlRows End With End Sub を実行すると横棒グラフが1個表示されますが、 これを、With ~ End Withを使わずに記述すると Sub test2() ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart.Chart.ChartType = xlBarStacked100 ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B2"), PlotBy:=xlRows End Sub というようになると思いますが、 実行すると縦棒が2個表示されてしまって同じ結果になりません。 なぜなのでしょうか。 test1を、With ~ End Withを使わずに記述するには、 どのように記述すればよいのでしょうか。 よろしくお願いします。(Windows10,Excel2016)
- ベストアンサー
- その他(プログラミング・開発)
- Excel VBA グラフチャート名で指定するには
ExcelのVBAでグラフを作成した後 ActiveChartでアクティブなチャートを指定するのではなく ActiveChart.Nameなどで取得したチャート名で指定するには どのように記述すればよいでしょうか。 例えば、以下のtest()のコードの中の ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows ActiveChart.SetElement (msoElementPrimaryCategoryAxisNone) ActiveChart.PlotArea.Select ActiveChart.Parent.Copy の部分をActiveChartを使わずチャート名(chart_nameなど)で指定するには どのように記述すればよいでしょうか。 よろしくお願いします。(Windows7,Excel2016) --------------------------------------- Sub test() Dim chart_name As String ThisWorkbook.Worksheets("Sheet1").Select ThisWorkbook.Worksheets("Sheet1").Range("A1") = "A" ThisWorkbook.Worksheets("Sheet1").Range("A2") = "B" ThisWorkbook.Worksheets("Sheet1").Range("B1") = "75" ThisWorkbook.Worksheets("Sheet1").Range("B2") = "25" ThisWorkbook.Worksheets("Sheet1").Range("A10").Select ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart2(297, xlBarStacked100).Select ThisWorkbook.Worksheets("Sheet1").Select ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows chart_name = ActiveChart.Name chart_name = Trim(Right(chart_name, Len(chart_name) - Len(ActiveSheet.Name))) ThisWorkbook.Worksheets("Sheet1").ChartObjects(chart_name).Activate ActiveChart.SetElement (msoElementPrimaryCategoryAxisNone) ActiveChart.PlotArea.Select ActiveChart.Parent.Copy End Sub
- 締切済み
- Excel(エクセル)
- マクロを利用して、用紙にグラフを縮小印字したい
office2007。Vistaを使用。 記録ボタンを利用して、エクセルのグラフを用紙に縮小(用紙の半分くらい)印字するマクロを作成し体のですが、うまくいきません。画面上は用紙に対して縮小されるのですが、「マクロの記録」ではそれが記録されません。縮小するときはグラフを選択し、四隅のボタンをドラッグして縮小しました。(「表示」「ズーム」では画面は縮小されても用紙に対しては縮小されず、用紙いっぱいに印字されてしまいます。) office2003で作成したときは zoom を使用したような気がしますが、2007ではどうしたらよいのでしょうか?お教えください。A1B5 にデータが入っています。グラフは新しいシートに作成します。 Sub Macro1() ' Macro1 Macro Range("B2").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5") ActiveChart.ChartType = xlColumnClustered ActiveChart.Location Where:=xlLocationAsNewSheet ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Sheets("Sheet1").Select Range("A1").Select End Sub
- ベストアンサー
- オフィス系ソフト
- Excel マクロでグラフの切取り貼り付け
手動で行なった[マクロの記録]どうりに、マクロを実行してもうまくいきません。 マクロで、グラフの切り取り、貼り付け、形式を選択して貼り付け<図 (拡張メタファイル)>を実行すると、クリップボードに入らず、エラーとなる。 手動で行なうとOKなのですが、 [ツール]の[新しいマクロの記録]では、下記のとうり記録されていて、実行結果も正しいのですが、マクロで実行すると、クリップボードに入らず、エラーとなります。 ------------------------------- Range("E2:H4").Select Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("E2:H4") ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" ActiveWindow.Visible = False ActiveWindow.WindowState = xlNormal ActiveWindow.WindowState = xlMaximized Range("C12").Select ActiveSheet.PasteSpecial Format:="図 (拡張メタファイル)", Link:=False, _ DisplayAsIcon:=False Range("J7").Select ------------------------- Office XP 2002 マクロ、素人です。 どうしてでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- excelのマクロによるグラフの指定方法
マクロがどのように記録されるかを見ながら、VBAのスクリプトの書き方を学んでいる初心者です。 Sub Macro1() ' ' Macro1 Macro , ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveWindow.ScrollColumn = 1 ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$B$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$B$4:$B$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$C$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$C$4:$C$18" ActiveChart.ChartType = xlLine ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$D$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$D$4:$D$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$E$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$E$4:$E$18" ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(3).Name = "='平均化'!$F$1" ActiveChart.SeriesCollection(3).Values = "='平均化'!$F$4:$F$18" End Sub 以上のマクロを作成し、実行したのですが、”指定した名前のアイテムが見つかりませんでした”と出て、上手く実行されませんでした。 操作対象のオブジェクトを行き来する方法を知りたいのですが、オブジェクトを作成するたびに ActiveSheet.ChartObjects("グラフ 1").Activate のダブルクオーテーション内に当たる値が自動的に割り振られるため、この部分でエラーになることは分かりました。 つまりこの値をこちらから指定出来れば、望んだ動作をさせられるのではと考えているのですが、 どなたかご教示お願いできませんでしょうか。
- 締切済み
- その他MS Office製品