• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAの不可解(?)な動作について)

Excel VBAの不可解な動作について

このQ&Aのポイント
  • Excel VBAのコードでの期待しない動作に関して質問があります。コードが目的通りに動かない理由や解決策を教えてください。
  • Excel 2000で使用するVBAコードに不可解な動作があります。コードを実行すると期待した動作とは異なる結果になります。この問題の原因と解決策を教えてください。
  • Excel VBAでの予期しない動作についての質問です。特定のコードを実行すると、意図した結果とは異なる動作が発生します。この問題の原因と解決策について教えてください。

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

  • ベストアンサー
  • Ryocchi
  • ベストアンサー率38% (38/98)
回答No.2

すいません、何か勘違いしたようです。 Sheets("Sheet2").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = "test" '問題の行 問題はシート名変更部分ではなく、シートコピー部分ですね。 本来Sheet3の後ろにコピーされなければならないのに、Sheet3が非表示の為、Sheet2の後ろ(Sheet3の前)にコピーされている為ですね。 失礼しました。

noname#224929
質問者

お礼

No.1とあわせまして、ご回答ありがとうございました。 ご回答を元に、Sheet3を再表示させてみると、確かにSheet3の前にコピーされていることがわかりました。 シートの表示/非表示によって、こんなところにも違いが出るのですね。 扱いにくい気がしますが、仕様なので仕方ありませんね。 どうもありがとうございました。

その他の回答 (1)

  • Ryocchi
  • ベストアンサー率38% (38/98)
回答No.1

Sheets.Countには現在のシートの数が入っています。 問題の行の1行前  Sheets("Sheet2").Copy After:=Sheets(Sheets.Count) ではSheet2を現在のシートの数番目の後ろにコピーしますので、 Sheet3の後ろにコピーされます。 この時点で、現在のシートの数は4になりますので、  Sheets(Sheets.Count).Name = "test" '問題の行 この行では4番目の行の名前をtestにしています。 つまり、Sheet3の後ろにあるSheet2(2)をtestにしています。

関連するQ&A

専門家に質問してみよう