• 締切済み

非アクティブシートでのグラフ作成方法について

VBAを使ってアクティブなっていないシートのセルを参照したグラフを 作成したいと思っているのですが、可能でしょうか? また、軸の最少最大値などのグラフの設定を同様に変更することは可能でしょうか? 例 シート1がアクティブになっているときに、 シート2のA1~B5のデータでグラフを作成する。 この時、シート2をアクティブにせずにグラフを作成したい。 さらにシート2をアクティブにせずにグラフの書式等を設定したい。 アクティブになっているシートでグラフを作成するのは マクロで記録した物をいじくれば問題なく作れると思いますが、 グラフを複数のシートで作成する必要があり、 画面が一々切り替わるのはちょっと・・・と思い、 できればボタンを押して別のシートに移らずにグラフを作成したいのです。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

アクティブで無いシートでグラフを作成するコード例です。 1番目のシートのA~C列に、列毎にデータがあり、当該シートにグラフを作成する例です。 どこのシートからでも実行可能です。 さわりしか記してないので応用されるならご自分で添削をお願いします。 Sub test() Dim mychartObj As ChartObject Dim targetRange As Range Dim mySeries As Series Dim i As Long Dim sh As Worksheet Set sh = Sheets(1) Set mychartObj = sh.ChartObjects.Add(50, 50, 250, 250) With sh Set targetRange = Range(.Range("A2"), .Range("A" & .Rows.Count).End(xlUp)).Resize(, 3) End With With mychartObj.Chart .ChartType = xlXYScatter .HasLegend = False .Axes(xlCategory).HasMajorGridlines = True .Axes(xlCategory).MinimumScale = 10 .Axes(xlCategory).MaximumScale = 100 End With For i = 2 To targetRange.Columns.Count With mychartObj.Chart Set mySeries = .SeriesCollection.NewSeries mySeries.XValues = targetRange.Columns(1) mySeries.Values = targetRange.Columns(i) End With Next i End Sub

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

#2です。 ちょっと訂正。 「selectメソッドを使わずに」 ↓ 「selectionを使わずに」

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

selectメソッドを使わずに直接シート名で参照するか、setステートメントでオブジェクト変数を使うようにすれば、 シートをアクティブにすることはないと思うが。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

>画面が一々切り替わるのはちょっと・・・と思い 画面が更新されなけばよいのでしたら、マクロの冒頭で Application.ScreenUpdating = False という記述をしておき、マクロの最後で Application.ScreenUpdating = True としておけば、途中でアクティブシートがコロコロ変わるのが表示されないと思います。

関連するQ&A

  • シートの保護、グラフ作成

    お世話になります。 Excelでアンケートの集計をしています。 別のシートに集計データを参照しました。そこにマクロの記録で、グラフを作成するマクロを作成しました。また、このマクロを登録したボタンを配置しています。 このシートに、「シートの保護」を設定しました。 その後、マクロボタンをクリックすると別添のメッセージが表示され、グラフは作成できません。 確かに、「挿入」タブのリボンは、グレーアウトしています。 「シートの保護」を設定した後も、ボタンからグラフを作成する方法はないでしょうか。 よろしくお願いします。 エラーメッセージ 「実行時エラー”1004”」 「指定された値は境界を超えています。」 OS: Windows 7 professional SP-1 32Bit Office: 2010 Professional 32Bit

  • excelのグラフ作成をマクロで

    excelのデータが多くてマクロで手っ取り早く処理したいのですが、どうすればよいのでしょうか? 初心者なもので。。。 A列をx軸にしてB列~P列をy軸にします。 1枚目がAとBでグラフを作成し、続いて2枚目としてAとCでグラフ作成し、同様にD・E・F・・・って作成したいです。 グラフは新しいシートを作成していきたいです。(計15枚だと思います。) で、そのシートの名前もつけたいです。 で、書式設定もマクロ上できたらうれしいです。 できないでしょうか? よろしくお願いします。

  • シート間のグラフスケールを合わせる

    エクセルでマクロを作成してますが、分からないので教えてください。 「まとめ」というシートに"まとめ"という名称のグラフがあり、 「(1)」というシートに"グラフ1"という名称のグラフがあります。 この別々のシートにある2つのグラフはY軸の尺度が違っています。 そこで、"グラフ1"のY軸の尺度(最小値・最大値・目盛間隔・補助目盛間隔)を グラフ"まとめ"にそのまま移し変更するマクロを考えています。 すみませんが宜しくお願い致します。

  • Excel2003 グラフオブジェクトのロックについて

    Excel2003 でグラフ(グラフオブジェクト)を作っています。 VBAを用いてY軸の書式設定(最大値や目盛間隔)を変更する必要があるのですが、「シートの保護」を行なうと、VBAでのY軸の書式設定ができません。「シートの保護」メニューで<オブジェクトの編集>を許可するとY軸の書式設定の変更はできるのですが、画面上でグラフオブジェクトの操作もできてしまいます。 画面上ではグラフオブジェクトの操作をロックし、VBAでのY軸の書式設定を行なうことは可能でしょうか? 解決方法(VBAでの「シートの保護」メニューの<オブジェクトの編集>の許可/禁止の変更など)をご存知の方、教えて下さい。お願い致します。

  • Excel グラフ一括作成

    添付画像の通り、同じ様式の表があるシートが複数あります。 中身の値だけシートによって異なります。 各シートのグラフを一括作成する方法はありますか? 自分でVBAを書くことはできませんが、マクロの記録はできます。 なにかテクニックはありませんか?

  • VBAでのグラフ作成について質問です。

    VBAでのグラフ作成について質問です。 Sheet1のA2:A10にx軸の値、Sheet1のD2:D10にy軸の値を設定した折れ線付き散布図を作成したいと思い、以下のようなマクロを組みました。 Sub Test() Dim chart1 As Chart Set chart1 = Charts.Add chart1.SetSourceData Worksheets("Sheet1").Range("A2:A10, D2:D10") chart1.ChartType = xlXYScatterLines End Sub 実行してみると、x軸に設定したセルがy軸の値になってしまい、 xの値が空欄の2つの折れ線グラフが現れてしまいます。 A2:A10をx軸の値に、D2:D10をy軸の値にしてグラフを作成するには上記のマクロをどのように変更すればよいのでしょうか?

  • Excelのグラフを動的に作成したい。

    Excelのバージョン:2002 Excelのグラフ機能を使ってグラフを作成しており、「名前の定義」を利用して ドロップダウンリストの中身でグラフが変化するところまでは出来たのですが 本来の目的が上手く行きません。 以下に、自身で作成した変化するグラフの手法を書きます。 0:項目軸と値にそれぞれA~Eまでの5種類のパターンがあるデータを用意。 1:項目軸A~Eまでのデータ範囲にそれぞれ「項目軸A」、「項目軸B」…… と名前の定義をする。 2:値A~Eまでのデータ範囲にそれぞれ「値A」、「値B」…… と名前の定義をする。 3:A1セルにA~Eまでのドロップダウンリストを作成する。 4:「名前の定義」から「sheet1!項目軸(シート固有)」という名前で参照範囲に「=INDIRECT("項目軸"&sheet1!$A$1)」と入力する。 5:「名前の定義」から「sheet1!値(シート固有)」という名前で参照範囲に「=INDIRECT("値"&sheet1!$A$1)」と入力する。 6:グラフツールを使って棒グラフを作成。 グラフの「元のデータ」にて、「系列」タブを開いて系列を追加。  値に「sheet1!値」、項目軸ラベルに「sheet1!項目軸」を入力してグラフを作成。 7:ドロップダウンを変化させると、ドロップダウンの表示に対応したグラフが表示される。 本来の目的は、 3のA1セルに自身のシート名を取得する式を記入して、このシートを複数作成し、 シート名をA、B、……と変更する事によって、自動的にグラフが変化していく物を作りたいのですが シートを複製した途端、グラフの「項目軸」と「値」に{100,200,……}と言った形で実際の値がコピーされてしまいます。 なんとか上手く作成する方法はありますでしょうか? ご教授の程、よろしくお願い致します。

  • エクセルのグラフ作成について

    エクセルで教えてください(初心者です)。まずは、自分で調べるのでしょうが、仕事上、すぐに進めなければならないので、すいませんが知っている方で教えてくだされば幸いです。 下記のような数値をグラフ化したいのですが、大量にデータのグループがあるので、いちいちグラフ作成ボタンを押さなくとも、セルにデータを入力してグラフ作成ボタンをおせば、すべてのグループのグラフが1枚のSheetかけるようにしたいです。(マクロを組む必要があるのでしょうか) *グループ1 A B C   S/N1 30  50 70 S/N2 50 60 65 S/N3 40 67 70 A,B,CをX軸,そのときの数値(30,50,70)をY軸にしたいです。 どうかお願いいたします  

  • マクロでグラフ作成

    マクロを使って、各シート(ひな型は同じでデータが各々違う)の特定の部分のデータから折れ線グラフを書こうとしています。 しかし、どのシートでマクロを実行しても、最初にマクロを記録したシートのデータからグラフができてしまいます。 マクロの保存法が悪いのでしょうか? 相対参照で記録、なども試してみましたが駄目でした。 どなたかお分かりになる方、助けてください。

  • マクロでグラフを作成したい。

    エクセルのマクロについて教えて下さい。 グラフ作成をマクロ登録したのですが、元となるデータの参照範囲が違っても(例えばX軸の個数が違う)うまくグラフ化するようにしたいです。 教えて下さい。

専門家に質問してみよう