• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの質問(シートのコピーについて))

VBAでシートのコピーに関する問題とエラーメッセージの解決方法

このQ&Aのポイント
  • VBAを使用してシートを別のワークブックにコピーする方法について質問します。マクロを実行すると、指定されたシート名のシートが作成されます。その後、コピーするシート名を配列に格納し、それを使用してシートをコピーしようとしています。しかし、実行時エラーが発生し、「インデックスが有効範囲にありません」というエラーメッセージが表示されます。
  • エラーメッセージによれば、配列参照のインデックスが有効範囲外であるということです。しかし、配列を直接指定する方法では正常に動作します。この問題の解決策は何でしょうか?初心者にとっては基本的な問題かもしれませんが、どなたか教えていただけますか?
  • VBAを使用してシートを別のワークブックにコピーしようとしていますが、配列を使用してオブジェクトを指定する場合にエラーが発生します。配列を直接指定する方法では正常に動作しますが、配列に格納してから指定する場合にエラーが発生します。このエラーの原因と解決方法をご教示ください。お願いいたします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

質問のコードを使用するなら Sub test() Dim i Dim CopySheet Dim strA(2) strA(0) = "sheet1" strA(1) = "sheet2" strA(2) = "sheet3" 'シートのコピー For i = 0 To UBound(strA) If i = 0 Then CopySheet = strA(i) ElseIf i > 0 Then CopySheet = CopySheet & "," & strA(i) End If Next i MsgBox CopySheet Sheets(Split(CopySheet, ",")).Copy End Sub こんな感じにしないとね 上のコードを要約すると Sub test() Dim i Dim strA(2) strA(0) = "sheet1" strA(1) = "sheet2" strA(2) = "sheet3" 'シートのコピー Sheets(Split(Join(strA()))).Copy End Sub こんな感じです 参考まで

zuraoyaji
質問者

お礼

Sheets(Split(CopySheet, ",")).Copy  ↑ Splitを使ってやれば、簡単に出来るのですね。 文字列(CopySheet)を作るのに、必死になっていました・・・ 大変有難うございました。

その他の回答 (2)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

回答1、myRangeです。 >ご回答どおりにやってみましたが、NGでした。 配列に入っているシートがないのでは? ま、それは置いといて、 新しいブックで下記を試してみてください。 質問者のExcelも新しいブックではシートが3枚開くという前提。 違ったら適宜変更のこと。 Sub test()   Dim strA() As String   ReDim strA(1)   strA(0) = "Sheet2"   strA(1) = "Sheet3"   Sheets(strA()).Copy End Sub 以上です。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

  あっさりと   Sheets(strA()).Copy ではどうでしょうか。 以上です。

zuraoyaji
質問者

補足

ご回答どおりにやってみましたが、NGでした。 エラーメッセージは同じです。

関連するQ&A