- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一括印刷vba エラー)
一括印刷VBAエラー対処法
このQ&Aのポイント
- 複数シートの印刷VBAで「インデックスが有効範囲ではありません」のエラーが発生する場合の対処法について説明します。
- エラーが発生する原因は、シート名の変数への格納や配列変数の個数の宣言に問題がある可能性があります。
- エラーを解消するためには、シート名の変数への格納や配列変数の個数の宣言を正しく行う必要があります。初心者の方でもわかりやすい解説を提供します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 コードは試してはみませんでしたが、変数の宣言の抜けとかは別にして、直感的にみて、コードが変です。 > x = x + 1 >ReDim Preserve AllShName(x) >AllShName(x) = Sh.Name この順序がおかしいです。配列は、0からですから、 「インデックスが有効範囲ではありません」 は、1から進んでいるので、配列の[0]の場合に、Emptyが含まれているからです。 ReDim Preserve AllShName(x) AllShName(x) = Sh.Name x = x + 1 のはずです。ただし、Worksheetは、見えているものに限りますから、 万が一には、 If Sh.Visible = xlSheetVisible Then ReDim Preserve AllShName(x) AllShName(x) = Sh.Name x = x + 1 End if という必要があるかもしれません。 他にも大丈夫なのかなと、疑問に付くところはあるのですが、それは、そのままにしておきます。
お礼
なるほど。配列変数は0からなのですね。 1からだと思い込んでおりました。 こんな基本的なことも知らないなんてはずかしいかぎりです。 ご指摘のとおり、X=X+1をシート名取得後にもってくるとうまくいきました。 ありがとうございました。 ちなみに、ファイル名を取得する前段階のVBAは文字数が足りなかったので省略している関係で変数の宣言抜け等があった次第です。情報量が少ない中で的確なご指摘ありがとうございました。