- ベストアンサー
Excel VBAの不思議な現象について
- Excel VBAでの特定のコードを実行すると、稀に予期しない動作が発生します
- 具体的には、新規ブックに追加されるシートが正しくなく、元のブックが保存されることがあります
- この現象の原因は不明であり、エラーが出ずに処理が続行するため困っています
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
重いシートだとたまにあるっぽいですよ、ソレ。 > つまり、ActiveworkbookをMENUであると コピー完了を待ちきれずに処理が進んじゃう・・・みたいです。どーも、コピーや描画など一部機能は同期がとれなくなるコトがあるらしく、不思議なエラーは他にもいくつか。 記憶曖昧ですが、下手すると不正アクセスで落ちるかも? まぁ、発生が稀なら、エラーチェックとしてブック名を確認。 With ActiveWorkbook If .Name = "Menu.xls" Then Stop できれば、負荷を減らすために「新ブック作成&シートの内容をひとつずつコピー」がオススメです。分けた方が安定するし、処理が早くなるケースもあります。 新ブック作成なら Set bk = Workbooks.Add と戻り値でブック受け取れるので、他の方が指摘するよーに、Active~の使用を控える意味でもいいですよ。 Active~は便利だけど混乱招くので、慣れてきたら控えたいです。
その他の回答 (2)
- TAKA_R
- ベストアンサー率32% (26/79)
ActiveWindow →ThisWorkbook にすれば、問題は解決するのでは・・・、と思います。 駄目だったら、どのワークシートがアクティブなのかをはっきりさせてやる。
お礼
回答ありがとうございます。 やはり新規ブックのまま実行するよりも、ブックを一度保存するか変数を使って処理するのがベターですかね… 別の方法を試してみます。
- watabe007
- ベストアンサー率62% (476/760)
>途中でエラーが出て止まってくれれば良いのですが、 >間違ったまま最後まで処理が行われてしまうので困っています。 Application.DisplayAlerts = False を外せは原因が解るかも
お礼
回答ありがとうございます。 DisplayAlertsを消して試してみます。 エラーメッセージが出てくれると良いのですが…
お礼
回答ありがとうございます。 >コピー完了を待ちきれずに処理が進んじゃう 確かにコピーしたいシートは数値や関数がたくさん入っていて重く、不思議な現象がちょうどそんな感じなので、納得です。 アドバイスも含めてとても参考になりました。 やはり変数を使った記述に書き換えたいと思います。