• ベストアンサー

【Excel_VBA】オブジェクト名の変数

ExcelVBA(2007)でシートのオブジェクト名を変数で回したく、下記コードを用いたのですがエラーが出現します。 【コード】 Dim i As Integer For i = 1 To 10 Sheet & i.Activate Next i 【エラー内容】 コンパイルエラー: 修正候補:式 この場合、どのような方法を用いたらシートのオブジェクト名を変数でうまく回すことができるのか、ご教授いただければ助かります。 よろしくお願いします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>シートのオブジェクト名を変数でうまく回すことができるのか 無理っぽいね 普通、シート名が解らない時はインデックスで廻すんだけど For i = 1 To 10   Worksheets(i).Activate Next 無理やりするんだったら Dim i As Integer Dim sh As Worksheet For i = 1 To 3   For Each sh In Worksheets     If sh.CodeName = "Sheet" & i Then       sh.Activate     End If   Next Next

kojist
質問者

お礼

ご回答ありがとうございます。 インデックスで回すことも検討しましたが、各シート位置が変わる可能性があるという点で、断念しました。 教えていただいたコードをで試したところ、うまく回すことができました。 ご丁寧にご回答いただきまして、ありがとうございました。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.3

元ソースをつかうなら --- Dim i As Integer For i = 1 To 10 Worksheets("Sheet" & i).Activate Next i

kojist
質問者

お礼

ご回答ありがとうございます。 教えていただいたコードで試してみたところ、 「実行時エラー '9': インデックスが有効範囲にありません」 のエラーが出てしまいました。 Worksheets("Sheet" & i).Activate ↑ ここが引っ掛かったようですね。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

こんな、方法も Dim sh As Variant For Each sh In Array(Sheet1, Sheet2, ・・・・・,Sheet10)   sh.Activate Next

kojist
質問者

お礼

別の方法も教えていただき、ありがとうございました。 今回は実際のシート数が多い(80シート)ので、こちらの方法は採用しませんでしたが、シート数が少ない時などは見やすいですね。 まだVBAに慣れていないので、別の方法を教えていただけると勉強になって助かります。 本当にありがとうございました。

関連するQ&A