• ベストアンサー

Excelマクロ シート名を変数で指定

Excelマクロの初心者です。 Sheet1~50を、変数を用いて順に選択したく Dim i as Integer For i = 1 to 50 Sheets("Sheet"&i).Select Next i としたところ、 『実行時エラー'9':インデックスが有効範囲にありません』となってしまいます。 勉強不足なものでどこがいけないのか、どう修正すればよいかわからず困っています。 よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 インデックスで回していくときは、以下のように変えたほうがよいです。 >Dim i as Integer >For i = 1 to 50 > Sheets("Sheet"&i).Select >Next i   ↓ Dim i as Integer For i = 1 to Worksheets.Count 'またはシートの数  Worksheets(i).Select  '--処理--- Next i インデックスは、シート・タブの左から順番に数えていく方法です。 なお、Sheet と Worksheet は、同意義でありません。Sheet は、ワークシート、グラフシート、マクロシート・ダイアログシートの4つがあります。分かりきっていても、ワークシートの場合は、Worksheet と習慣づけるようにしたほうがよいです。

HAMUK0
質問者

お礼

ありがとうございます。 SheetとWorksheetの違いも分かっていなくて、もっと勉強しなきゃいけないなと思いました。 解決方法だけではなくアドバイスもいただけて、非常に感謝しています。 本当にありがとうございました。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

シート名は、 >Sheet1~50 で間違いないですか? 名前を変更しているけど、左端から1~50にあたるシートを選択なら、 Sheets(i).Select でもよいはずです。

HAMUK0
質問者

お礼

Sheets(i).Select にしたところ、できました!!! 上記のシート選択の作業を60回以上やらなければならなかったので、 本当に助かります。 本当に本当にありがとうございました。

関連するQ&A