- ベストアンサー
【Excel_VBA】オブジェクト名の変数
ExcelVBA(2007)でシートのオブジェクト名を変数で回したく、下記コードを用いたのですがエラーが出現します。 【コード】 Dim i As Integer For i = 1 To 10 Sheet & i.Activate Next i 【エラー内容】 コンパイルエラー: 修正候補:式 この場合、どのような方法を用いたらシートのオブジェクト名を変数でうまく回すことができるのか、ご教授いただければ助かります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>シートのオブジェクト名を変数でうまく回すことができるのか 無理っぽいね 普通、シート名が解らない時はインデックスで廻すんだけど 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
その他の回答 (2)
- o_chi_chi
- ベストアンサー率45% (131/287)
元ソースをつかうなら --- Dim i As Integer For i = 1 To 10 Worksheets("Sheet" & i).Activate Next i
お礼
ご回答ありがとうございます。 教えていただいたコードで試してみたところ、 「実行時エラー '9': インデックスが有効範囲にありません」 のエラーが出てしまいました。 Worksheets("Sheet" & i).Activate ↑ ここが引っ掛かったようですね。
- watabe007
- ベストアンサー率62% (476/760)
こんな、方法も Dim sh As Variant For Each sh In Array(Sheet1, Sheet2, ・・・・・,Sheet10) sh.Activate Next
お礼
別の方法も教えていただき、ありがとうございました。 今回は実際のシート数が多い(80シート)ので、こちらの方法は採用しませんでしたが、シート数が少ない時などは見やすいですね。 まだVBAに慣れていないので、別の方法を教えていただけると勉強になって助かります。 本当にありがとうございました。
お礼
ご回答ありがとうございます。 インデックスで回すことも検討しましたが、各シート位置が変わる可能性があるという点で、断念しました。 教えていただいたコードをで試したところ、うまく回すことができました。 ご丁寧にご回答いただきまして、ありがとうございました。