• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エラーになりますが、原因が分かりません。)

Excelコーディングでグラフを書き直している際にエラーが発生する

このQ&Aのポイント
  • 以下のコーディングでは、ExcelのVBAを使用してSheet1にある元データを指定の範囲で修正し、グラフの書き直しを行っています。
  • しかし、2枚目のグラフを書き直す際に「実行時エラー '1004' 'cells'メソッドは失敗しました:'_global'オブジェクト」というエラーが発生しています。
  • このエラーは、range2の指定が正しくないことが原因で発生している可能性があります。具体的な原因を特定するために、コメントアウトした箇所を除いた場合にエラーが発生するかどうか確認してみてください。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

RangeやCellsは、シートの指定が無いとその時アクティブなシートを見に行きます。 1回目は、Sheets("Sheet1").Select で、"Sheet1"シートがセレクトされた後なので、 RangeもCellsも、"Sheet1"シートのセルを見に行っています。 しかし、その後で Sheets("Graph" & n).Select と、"Gtaph1"シートをセレクトしていますので、2回目は"Gtaph1"シートのセルを見に行こうとして失敗しています。 #グラフシートも、「シート」なのでアクティブなシートになります。 Sheets("Sheet1").Range(……)の、様に、どのシートを見に行くのか明示的に指定するか、余計なシートをアクティブにしないようにしましょう。

nagahaha
質問者

お礼

早速有り難うございました。 回答を読み始めて直ぐ分かりました。 どうも何時も見よう見まねでやっているため、 今回のような思いに気が回っておりません。 今後勉強いたします。 もちろんご指摘の通り対応し、完成いたしました。 有り難うございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

グラフシートに移動してしまってるのに,シートを戻さずに range2 = Range(Cells(1, n + 2), Cells(lastln, n + 2)).Address とアクティブシート(ワークシート)を前提にしたマクロを実行しようとして,エラーが起きています。 丁寧に毎回シート1に戻してから問題の行を実行するか, (アクティブシートの)というマクロの書きぶりを改めて range2 = シート.range(シート.Cells(1, n + 2), シート.Cells(lastln, n + 2)).Address のように丁寧に(必要に応じてWith … End Withなどを使いながら)作成するか そもそも「アクティブなんたら(Select/Selection)を使わないマクロ」を書けるよう練習する などで対処します。 また,ご相談で関係ないと思って情報提供を省いた sub end sub の部分が実際はどうなっているのかによっても,異なる対処が必要となる可能性もあります。

nagahaha
質問者

お礼

早速有り難うございました。 回答を読み始めて直ぐ分かりました。 どうも何時も見よう見まねでやっているため、 今回のような思いに気が回っておりません。 今後勉強いたします。 もちろんご指摘の通り対応し、完成いたしました。 有り難うございました。 全く1番の方と時を同じくして回答いただきました。 お二方にベスト差し上げられなく申し訳在りませんが、 ちょっとの差で早かった1番の方にベストポイントを差し上げたく思います。 申し訳在りません。

関連するQ&A

専門家に質問してみよう