• ベストアンサー

マクロが止まってしまいます. (マクロ初心者です)

ある2列のデータを選択して(例えばA1からB10まで) グラフウィザードを選択して散布図のグラフを作成する. 上記のようなマクロを作成したのですが, 作ったエクセルのファイル上ではちゃんと動いてくれるのですが 別のファイルで使うと 「実行エラー9 インデックスが有効範囲にありません」 と警告がでて途中で止まってしまいます. マクロ初心者でプログラムもわからないです. 保存先がよくないのでしょうか? それとも,もともとこのような作業(マクロを別のファイルで使用) はできないものなのでしょうか? よろしくお願いします. windows98 Excel2000

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

質問の意図が良く掴めませんが、下記と比べて違いを教えてください。私のがやると上手く行きましたが、やっていることが違うのかも知れませんがそれが何かを明かにすると、回答が入ると思います。 推定では「シート名が変っているのに、変えてないからではないですか」 下記コードでは「Sheets("Sheet1").Range("A1:B10"), 」のところです。 (1)Sheet1にA1:B10に数字データを入力する。 (2)ツール-マクロ-新しいマクロの記録をクリック。 (3)挿入-グラフ-以下略-完了(グラフウイザード) (4)ツール-マクロ-マクロの記録終了 (5)ツール-マクロ-マクロ-編集  (6)VBEのマクロの記録をコピー Sub Macro1() Range("A1:B10").Select Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B10"), 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 (7)ブックを閉じる。 (8)改めて新規ブックを開く。 (9)Sheet1のA1:B10に数字データを入れる。    前と同じく「シート名はSheet1のまま」です。 (10)ツール-マクロ-VBEをクリック。 (11)挿入-標準モジュールをクリック。 (12)標準モジュール画面に貼り付ける。上記コードと    当然同じです。 (13)実行する。 (14)Sheet1にグラフが描けた。(テスト済み)

hithit
質問者

お礼

imogasiさんの推測どおりです. シート名がどうもエラーの原因だったようです. 回答ありがとうございました.

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問の意図が良く掴めませんが、下記と比べて違いを教えてください。私のがやると上手く行きましたが、やっていることが違うのかも知れませんがそれが何かを明かにすると、回答が入ると思います。 推定では「シート名が変っているのに、変えてないからではないですか」 下記コードでは「Sheets("Sheet1").Range("A1:B10"), 」のところです。 (1)Sheet1にA1:B10に数字データを入力する。 (2)ツール-マクロ-新しいマクロの記録をクリック。 (3)挿入-グラフ-以下略-完了(グラフウイザード) (4)ツール-マクロ-マクロの記録終了 (5)ツール-マクロ-マクロ-編集  (6)VBEのマクロの記録をコピー Sub Macro1() Range("A1:B10").Select Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B10"), 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 (7)ブックを閉じる。 (8)改めて新規ブックを開く。 (9)Sheet1のA1:B10に数字データを入れる。    前と同じく「シート名はSheet1のまま」です。 (10)ツール-マクロ-VBEをクリック。 (11)挿入-標準モジュールをクリック。 (12)標準モジュール画面に貼り付ける。上記コードと    当然同じです。 (13)実行する。 (14)Sheet1にグラフが描けた。(テスト済み)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問の意図が良く掴めませんが、下記と比べて違いを教えてください。私のがやると上手く行きましたが、やっていることが違うのかも知れませんがそれが何かを明かにすると、回答が入ると思います。 推定では「シート名が変っているのに、変えてないからではないですか」 下記コードでは「Sheets("Sheet1").Range("A1:B10"), 」のところです。 (1)Sheet1にA1:B10に数字データを入力する。 (2)ツール-マクロ-新しいマクロの記録をクリック。 (3)挿入-グラフ-以下略-完了(グラフウイザード) (4)ツール-マクロ-マクロの記録終了 (5)ツール-マクロ-マクロ-編集  (6)VBEのマクロの記録をコピー Sub Macro1() Range("A1:B10").Select Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B10"), 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 (7)ブックを閉じる。 (8)改めて新規ブックを開く。 (9)Sheet1のA1:B10に数字データを入れる。    前と同じく「シート名はSheet1のまま」です。 (10)ツール-マクロ-VBEをクリック。 (11)挿入-標準モジュールをクリック。 (12)標準モジュール画面に貼り付ける。上記コードと    当然同じです。 (13)実行する。 (14)Sheet1にグラフが描けた。(テスト済み)

  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.1

初めまして。マクロのエラーは、自分でデバック(修正してきちんと動作するようにすること)をする以外には方法がありません。冷たいようですが、マクロの誤作動は、貴方様のブックの内容を拝見しなければどこでエラーが起こるのかが見当がつきません。 もし、どうしてもデバックを手伝ってほしい時は、貴方様の記述になったマクロすべてを教えて下さい。また、マクロのどの行でエラー(実行エラー9 インデックスが有効範囲にありません)と出るのかも教えて下さい。 お手数をおかけいたしますが、よろしくお願いいたします。

hithit
質問者

お礼

すいません! 説明が足らなかったようですね~. 質問内容の方は当方で解決できました. ご回答ありがとうございました.

関連するQ&A