ExcelのVBAマクロで教えてください。



Sub CopyWorksheet()
ActiveSheet.Copy After:=Worksheets("Sheet2")
End Sub



シートをコピーするだけの記述なのですが、
どうしても
「インデックスが有効範囲にありません」
というエラーが出ます。
原因がわからず、相談致します。



どうぞよろしくお願い致します。

回答の条件
  • 1人1回まで
  • 登録:2009/12/19 08:20:09
  • 終了:2009/12/19 15:38:26

回答(3件)

id:tetsu-pyon No.1

tetsu-pyon回答回数48ベストアンサー獲得回数112009/12/19 09:03:08

ポイント60pt

「Sheet2」自体が存在していない(例えば全角でシート名を書いているとか)ではないですか?

「Sheet2」になってたりとか・・・

基本的な構文でのエラーなんで、何か見落としているような・・・

違ってたらすみません。

id:miku1973

まさに

「Sheet2」自体が存在していない

でした。

お恥ずかしいですが、指摘されなければ解決できなかったかもです。

ありがとうございました。

2009/12/19 15:38:16

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 sy091219 15 10 0 2009-12-19 08:44:05
2 zifree 175 152 6 2009-12-19 10:13:21
  • id:SALINGER
    仮にSheet2の名前を変えてしまっているとしたら、こうすればいいです。
    ActiveSheet.Copy After:=Sheet2
  • id:tetsu-pyon
    そうですね(^ー^)
    日本語に直すと
    ActiveSheet.Copy After:=Worksheets("Sheet2")
    はアクティブなシートをコピーして「Sheet2」という名前のシートの後ろに貼りつけ(挿入)しなさい。

    SALINGERさんのは
    ActiveSheet.Copy After:=Sheet(2) (多分カッコがいる)
    なので、アクティブなシートをコピーして2番目のシートの後に貼付け(挿入)しなさい。
    です。

    汎用性を求めるなら後者のほうが良いですね。
  • id:tetsu-pyon
    ごめんなさい

    ActiveSheet.Copy After:=Sheets(2) Sheetではなくて複数形のシートの中の2番目だからSheets(2)でした (汗

    僕もよく間違います・・・・
  • id:SALINGER
    >tetsu-pyonさん
    私の言ってるのは2番目のシートの後に挿入という意味ではありません。
    Sheet2というオブジェクト名の後に挿入ということです。
    Sheet2を削除せず、名前を変更しているならば私の提示したコードでも動作します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません