workbook.Activateのおかしな挙動

良くExcel VBAでマクロを組みます。
それで出会ったおかしな挙動の忘備録です。


一つのブックから情報を収集して、別のブックにコピーするというマクロなのですが、その時、workbook.Activateでブックを切り替えるのですが、これがおかしな挙動をして、まったく困った事がありました。


どういう事かと言うと、記述したタイミングでブックの切り替えが行われず、後から切り替わる為、シート指定で実行時エラーになったり、ソートが正しく行われなかったりと言う事が起こるのです。


どうも、大きなセル範囲のコピーを行うと(多分、そこにそれなりの量のオートシェイプがあると)、そのコピーはバックグラウンドで行われ、その間、ブックはロックされて切り替わらない。で、コピーが終わったタイミングで、ブックの切り替えが行われる為、workbook.Activateの後でソートなどを行っても、コピーしてる最中だから切り替わらず、狙ったブックじゃないところがソートされたか、ソート自体がスキップされたようです。


ぐぐってもまったく似た症例が見つからなかったので、相当なレアケースだとは思います。


もし、ブック切り替えでコードを読んでも判らない時は、画面表示をONにして、ブック切り替えの挙動を目で追うと良いと思います。


それにしても、Basicなのに逐次実行じゃないなんて、Excelのばか〜〜〜って言いたくなりました。とほほ。