• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルグラフを別シートのグラフに連動させることはできますか?)

エクセルグラフを連動させる方法は?

このQ&Aのポイント
  • エクセルグラフを別シートのグラフに連動させる方法について説明します。
  • VBScriptを使用して、エクセルのグラフを別シートに作成し、入力画面のセルの値によってグラフの色を変えることができます。
  • しかし、この方法では画面のちらつきが生じてしまいます。よりスムーズな方法を探す必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

画面のちらつきをなくすのは下記のようにします。 Application.ScreenUpdating = False '画面更新抑止 ・処理 Application.ScreenUpdating = True  '画面更新 【Excel】VBAのパフォーマンスを向上する http://blog.livedoor.jp/akf0/archives/51118828.html ScreenUpdatingを使わなくても画面のちらつきをなくせます。 それにはSelect、Activateをしないようにして、ActiveSheetとかActiveCellをやめることです。 マクロ実行対象が同一ブック内なら、必要なところにはシート名をきちんと書いてやります。 提示されたコードも Sub Sam2()   Dim nColor As Variant   Dim i As Long   i = 1   If Sheets("入力画面").Cells(i, "M") = 1 Then nColor = 6   Sheets("入力画面").ChartObjects("グラフ 8").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor   Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor   Application.Goto Reference:=Sheets("入力画面").Range("H15"), Scroll:=True End Sub といった感じにまとめられます。 Sam2で画面が更新されるのは Application.Goto Reference:=Sheets("入力画面").Range("H15"), Scroll:=True のところだけです。 これなら Application.ScreenUpdating = True で、画面更新するのと変わりないことになります。

creopatra
質問者

お礼

ありがとうございます。 早速試してみたところすごくうまくいきました!! シート名ときちんと書くことが重要ですね!! 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルグラフ2003と2007の違いについて

    エクセル2003で下記のVBAの構文を作成しました。 入力画面シートで入力し、グラフに色付けを反映させたものを 印刷画面のグラフに同じものを反映させているのですが エクセル2003ではうまくいっていたのですが エクセル2007になると構文中の 【Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor】の部分で 実行時エラー'-2147467259(80004005) ColorIndexメソッドは失敗しました;'Interior'オブジェクト とでてきて使用できなくなりました。 どなたかエクセル2007で使用できるようにする方法を教えてください。 作成した構文は以下のものです。 Sub Sam1() Dim nColor As Variant Dim i As Long i = 1 If Sheets("入力画面").Cells(i, "M") = 1 Then nColor = 5 Sheets("入力画面").ChartObjects("グラフ 8").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor End Sub

  • エクセルのグラフ

    グラフが貼り付けられているシートを見えない状態でグラフ描画したいのですがうまくいきません ちなみに、今のコードはこうです。 Sub 電力力率表示() ActiveSheet.ChartObjects("グラフ 3").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SetSourceData Source:=Sheets(s_NAME) _ .Range("A2:C146"), PlotBy:=xlColumns End Sub

  • グラフの参照元を相対参照で記述するには

    マクロ初心者です。 あるグラフを最初テンプレートで作っておいて、他のデータでも簡単に同じグラフを作れるようにしたいです。 マクロの記録で「相対参照」があったので、これでできると思ったのですが、グラフのセルは絶対参照になるようです。下記のようになってりまいます。 Sub Macro6() ' ' Macro6 Macro ' ' ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveCell.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!J3:J11" ActiveChart.SeriesCollection(1).Values = "='Sheet1'!M3:M11" ActiveChart.SeriesCollection(2).XValues = "='Sheet1'!J3:J11" ActiveChart.SeriesCollection(2).Values = "='Sheet1'!P3:P11" ActiveCell.Select End Sub 具体的にやりたい動作は、 1.相対的な場所を決定するセルを選択(表の左上のセルなど) 2. ActiveChart.SeriesCollection(1).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル" ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に4列進んだセル:1.のセルから右に4列下に8列進んだセル" ActiveChart.SeriesCollection(2).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル" ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に6列進んだセル:1.のセルから右に6列下に8列進んだセル" というふうにしたいです。 ご指導お願いします。

  • グラフ可変範囲のデータ設定

    環境Excel2002です グラフ 1が棒グラフ2個、折れ線グラフ1個で作成されています Sheets("支社")に8支社のデータがあります グラフシートは1Sheetにしたいので グラフシートで支社を選択することにより Sheets("支社")の該当支社のグラフデータを取得します そうすると、グラフデータは可変範囲で設定することになります そのVBAが下記です ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).Select With ActiveChart.SeriesCollection(1) .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) .Values = Sheets("支社").Range(Cells(497, i + 1), Cells(497, i + 12)) End With .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) のところで実行時エラー1004がでてしまいます エラー回避方法を教えてください

  • エクセルのグラフをマクロで縮小化したい

    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

  • VBAで各シートの表でグラフを作成したいのですが

    シートごとにレイアウトが同じ表がありまして、 VBAで各シートの表でグラフを作成したいのですが、 どうしても作成した時のシートのデータで出来てしまいます。 egシート1で表作成>シート2でVBA実行してもシート1でつくったグラフが複製されるだけ、、 どうすれば、選択中のシートのデータで表ができるのでしょうか?? 一度グラフをコピーした上でデータを変える方法も試したのですが、 Sub Macro7() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).Name = "=Sheet2!$B$29" ActiveChart.SeriesCollection(1).Values = "=Sheet2!$B$31:$B$128" 結局シート2でしか出来ず、、です 「Sheet2!~」のところがいけないのはわかるのですが、、 この方法以外でもどんな方法でもよいのでどなたかお力かしてください。

  • 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 のダブルクオーテーション内に当たる値が自動的に割り振られるため、この部分でエラーになることは分かりました。 つまりこの値をこちらから指定出来れば、望んだ動作をさせられるのではと考えているのですが、 どなたかご教示お願いできませんでしょうか。

  • エクセルのグラフの操作

    エクセルのグラフの操作 初歩的でスミマセンが、よろしくお願いします。 エクセルのグラフのデータの内容を1セルずつ下に下げて、それを400回繰り返したいんです。 'wave-h'!R402C3と'wave-h'!R402C4を 'wave-h'!R403C3と'wave-h'!R403C4にして 'wave-h'!R867C3と'wave-h'!R867C4にまでしたいのですが。 do loopを考えてるんですが、引数?が上手くいかなくて・・・。 ついでにその後グラフをコピーしてペイントに貼り付けてJPGで保存する予定です。 これを400回以上繰り返すんですが、ペイントのコピーのところまではエクセルのVBAで可能でしょうか。よろしくお願いします。 ActiveSheet.ChartObjects("グラフ 4").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SeriesCollection(2).XValues = "='wave-h'!R402C3" ActiveChart.SeriesCollection(2).Values = "='wave-h'!R402C4" ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(2).Select ActiveChart.ChartArea.Select ActiveChart.ChartArea.Copy

  • Excel VBA グラフ作成のときのエラー

    VBA初心者です。Excel2003を使っています。 Sheet1に作りたいグラフがあります。 データは下記のとおりです。 ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A")のところで、「実行時エラー13 型が一致しません」とエラーがでます。 不思議なのは、昨日は動いていたのです。 なぜ、エラーが出るようになったのかわかりません。 ご教授よろしくお願いします。 A B 1 a 1 2 2 3 3 4 4 5 5 6 b 6 7 7 8 8 9 9 10 10 11 c 11 12 12 13 13 14 14 15 15 Sub test() Wrow = Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To Wrow If Worksheets("sheet1").Cells(i, "A").Value = "a" Then a_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "b" Then b_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "c" Then c_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "d" Then d_data = Worksheets("sheet1").Cells(i, "A").Row End If Next Sheets("sheet1").Select Range(Cells(a_data, "B"), Cells(b_data, "B")).Select ActiveSheet.ChartObjects.Add(30, 10, 500, 200).Select ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(a_data, "B"), Cells(b_data - 1, "B")), PlotBy:=xlColumns ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1" Sheets("sheet1").Select ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A") ←エラーがでます。 ActiveChart.SeriesCollection(2).Values = Range(Cells(b_data, "B"), Cells(c_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(b_data, "A") ActiveChart.SeriesCollection(3).Values = Range(Cells(c_data, "B"), Cells(d_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(c_data, "A") End Sub

  • Excel VBA グラフを任意sheetに移動させるには?

    アクティブになっているsheetのグラフを参照し、 それを『まとめ』sheetに移動して張り付ける。 現在 ★マークのところでエラーになっています。 オブジェクトは、このメソッドをサポートしていません…と、これは何のエラーになるのでしょうか? アドバイスお願い致します. Sub test() Dim str As String ★str = ActiveSheet.ChartObjects.Name 'strにグラフ名を代入 ←不具合中… Sheets("まとめ").Activate '---sheet 『まとめ』を アクティブにする ActiveSheet.ChartObjects(str).Activate ActiveChart.Paste End Sub

専門家に質問してみよう