ExcelマクロVBA技術解説
Excel2013におけるScreenUpdatingの問題点

ExcelマクロVBAの問題点と解決策、エクセルVBAの技術的解説
最終更新日:2015-01-23

Excel2013におけるScreenUpdatingの問題点

今現在、Excelの最新バージョンであるExcel2013ですが、
Application.ScreenUpdating
の動作が、それまでとは違ったものになっています。


Microsoftサポートにも掲載されています。
Excel 2013 で複数のブックを開き Appliction.ScreenUpdating プロパティ使用中にアクティブ ブックが切り替わるとウィンドウが点滅しデスクトップが見えることがある

つまりは、複数ブックを開いて、ウインドウが切り替わるときは、
Application.ScreenUpdating = False
を入れていても、画面がチラつくというものです。

対策としてまず考えられるのが、
DoEvents
を入れる事になりますし、上記でも対策として書かれています。
が、しかし、上手くいくときもあるようですが、ほとんどの場合はダメですね。
そもそも、
ThisWorkbook.Activate
とかで、ウインドウが正しく切り変わりません。 個別の対応方法はあったとしても、こうすれば良いというものが存在していないようです。
少なくとも、私のテストでは統一的な解決策は見つけられませんでした。

結論を言うと、諦めましょうということになります。

どうしても、チラつくのが嫌だということなら、
Application.WindowState = xlMinimized
で最小化してしまうとかの方が早いと思います。
もしくは、
New Excel.Application
で新規インスタンスを生成して、そこに別ブックを読み込むとかでしょうか。
しかし、余程の事情がない限り、あまり余計なことをしない方が良いでしょうね、
逆にドツボにはまる可能性もありますから。

できれば、Microsoftが変更してくれることを願いますが、
先のページの文章を見る限り、これは仕様なのでしようがないということらしいです。



同じテーマ「マクロVBA技術解説」の記事

入力規則のドロップダウンが消えてしまうマクロ(Shapes内のDrop Down)

シートのShapeを全削除すると、入力規則のリストのドロップダウンが消えてしまいます。入力規則のリストのドロップダウンの設定については、エクセル入門.入力規則.リスト こちらを参照して下さい。入力規則のリストのドロップダウンが消えてしまう具体的なマクロは、以下のようなVBAコードになります。
実行時にトラップ可能なエラー番号一覧
マクロVBA実行時に発生するエラーのエラー番号とエラーメッセージおよび簡単な理由と対策の一覧です。以下の表にあるエラーはトラップ(捕捉)できるエラー一覧になります。OnErrorステートメントおよびErrオブジェクトのNumberロパティを使用して、エラーへの対処を行うことができます。
フォルダー・ファイル(ブック)・シートの文字制限
フォルダーの作成、ファイルの作成、ブックの作成、シートの作成、この時に指定できない文字があります、使用可能な文字に制限があります、シートの文字制限について間違った解説が結構見受けられます。フォルダ・ファイル・ブックの文字制限 使用不可文字は以下になります。
Excel2013におけるScreenUpdatingの問題点
Dir関数の制限について
VBAでフォルダ・ファイルの存在確認や、一覧取得において使われる関数ですが、いくつかの使用上の注意点、制限事項があります。・3桁拡張子の指定時の問題 このように指定した場合、xlsxやxlsmも対象となります。3桁の拡張子を指定した場合は、4桁の拡張子も対象となります。
よくあるVBA実行時エラーの解説と対応
VBAを書き終えて、いざ実行したら意味不明なメッセージが… ここでは初心者向けに、代表的な実行時エラーの解説とその対応について説明します。中級者以上の方は、実行時にトラップ可能なエラー番号一覧と対処 こちらを参考に、エラー対応(OnError等)を実装してください。
Application.Goto使用時の注意
Applicationのメソッドに、Gotoメソッドがあります、Application.Gotoメソッドは、指定ブックの、指定シートの、指定セル範囲を選択します、そのブック・シートがアクティブでなければアクティブにします。最初に、Application.Gotoの一般的な文法説明をします。
ScreenUpdating=False時にエラー停止後にシートが固まったら
VBAでは、処理の高速化や画面チラつきを防ぐために、Application.ScreenUpdating=False これを入れていることが多いと思います。これが入っていると、VBAがエラーで停止して、そこで「リセット」した場合に、Excelシートをクリック出来なくなったり、シートタブの切り替えができなくなってしまう場合があります。
標準スタイル違いの問題点:標準フォント複写、列幅をピクセルで合わせる
VBAでスタイルの標準フォントが違うブック間のコピー等の処理では、列幅や行高の違いが問題となる場合があります。列幅や行高は、標準スタイルの1文字分を基本としているためです。上の画像は、標準フォントが違うブックにおいて、同じ列幅20の時の、列幅の表示です。
VBAでエラー行位置(行番号)を取得できるErl関数
VBAのデバッグでエラーが発生した行位置を特定する方法はいくつかあります。エラーが発生したVBAソースの行ラベルを取得することができる関数がErl関数です。Erl関数は、VB6に存在しVBAにも引き継がれ実装されているものです。


新着記事NEW ・・・新着記事一覧を見る

VBAにおける変数のメモリアドレスについて|VBA技術解説(11月8日)
空文字列の扱い方と処理速度について(""とvbNullString)|VBA技術解説(1月7日)
Errオブジェクトとユーザー定義エラー|VBA入門(11月5日)
シングルクォートの削除とコピー(PrefixCharacter)|VBA技術解説(11月4日)
ユーザー定義型の制限とクラスとの使い分け|VBA技術解説(11月3日)
クリップボードに2次元配列を作成してシートに貼り付ける|VBA技術解説(11月1日)
VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)|VBA技術解説(10月31日)
VBAクラスのAttributeについて(既定メンバーとFor Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • Excel2013におけるScreenUpdatingの問題点

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ