Excel 2013 で VBA コードを実行すると、Excel の一部が白または灰色に変わる

現象

Microsoft Excel 2013で Microsoft Visual Basic for Applications (VBA) コードを実行すると、Office テーマによっては Excel の一部が白または灰色で表示されることがあります。 コードが完了するまで空白のままです。 この問題は、VBA コードが、マクロが完了する前にユーザーが結果を表示するのに十分な長さのマクロで次のアクションの 1 つ以上を実行する場合に発生する可能性があります。

  • セルを繰り返し選択する
  • シートを挿入する
  • 作業ウィンドウを更新または開く
  • ブックを追加する

原因

この問題は、新しいグラフィックス エンジンを最適化するために Microsoft Office 2013 で行われた変更が原因で発生します。

回避策

  1. 無効になっている間に変更が表示されないように、ScreenUpdating を使用して Excel の画面更新プログラムを無効にします。 これにより、マクロのパフォーマンスが向上する可能性もあります。

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. 画面の変更を確認する必要がある場合は、コード内の行の後に DoEvents コマンドを挿入すると、画面が白く表示されます。 DoEvents を控えめに使用すると、マクロのパフォーマンスを維持するのに役立ちます。

    Workbooks.Add
    DoEvents
    

状態

これは、Excel 2013 の既知の制限事項です。

注:

すべてのバージョンの Excel では、Windows がアプリケーションを白にし、応答しないマークを付けると、実行時間の長いマクロでも同様の効果が発生する可能性があります。 これは、マクロの実行中に Excel が Windows に応答していないために発生します。 DoEvents は、Excel が Windows に応答し、アプリケーション画面の回復を許可することで、このシナリオにも役立ちます。