• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シート間の移動でエラーが発生しました。)

シート間の移動でエラーが発生しました。

このQ&Aのポイント
  • シートの移動においてエラーが発生しました。シートの順番やIndex番号の関係性について問題があり、正しい順番でシートを処理する方法を模索しています。
  • シートの移動に関する問題が発生しました。存在しないIndex番号のシートにアクセスするとエラーが発生し、またシートの順番が変更されている場合も正しく処理できません。
  • シートの順番やIndex番号による移動で問題が発生しました。シート名に数字を使うことで順序を保持する方法も考えられますが、それではシート名の自由度が低くなってしまいます。より良い解決策を模索しています。

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

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

試してみました Indexで取得できるのは、As Worksheet で宣言しても、Graphシートを含む番号の様ですが、 Graphシートは存在していませんか? Sub test() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets Debug.Print sh.Name, sh.Index Next sh End Sub 'Graphシートが最初に入れてあり、それのIndexが1とされます 'Sheet2は削除してありますが、そのIndexは他に割り振られます (単純にシートの並び順でつけられる) Sheet3 2 Sheet5 3 Sheet1 4 Sheet4 5 Sub test2() Dim sh As Worksheet Dim i As Long For i = 1 To ActiveWorkbook.Worksheets.Count Debug.Print i, Worksheets(i).Name Next End Sub 'これだと、1から指定できます。test()で取得されるIndexと違っています。 1 Sheet3 2 Sheet5 3 Sheet1 4 Sheet4

makoji
質問者

お礼

私に勘違いがありました。 ワークシートのIndexとオブジェクト名を混同していました。オブジェクト名の場合、あるシートを削除するとそのシートのオブジェクト名は欠番となり、新たに別のシートを挿入しても、そのオブジェクトは再利用されません。 皆さんが、私がやったのと同じようにIndexを基準にループを廻して、先頭のタブから順番に処理できているのを見て、他に原因があるはずと、再度コードを見直したところ、別のバグが見つかりました。 ご迷惑をお掛けしました。 すみません。

その他の回答 (1)

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

なんか、質問内容が判然としません。 (1)シートタブの並んでる順に処理したい (2)シート名の順に処理したい の、どちらでしょう。 For i = 1 To 10 Debug.Print Worksheets("Sheet" & i ).Name なんて書き方をしてるのでしょうか? (1)の並んでる順なら、 For i = 1 To Worksheets.Count Debug.Print Worksheets(i).Name ってな感じになります。

makoji
質問者

お礼

mitarashiさんへのレスに書いたとおり、私の不注意でした。 てっきりIndexとオブジェクト名を同じと思っておりました。大変失礼しました。 皆様にご教授いただいたコードを検分する中で、この愚昧に気づかせていただきました。 ありがとうございます。

関連するQ&A