Page 211 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼表作成の描画時 rin-bon 02/10/16(水) 11:14 ┗Re:表作成の描画時 yu-ji 02/10/16(水) 11:31 ┗Re:表作成の描画時 rin-bon 02/10/16(水) 12:26 ┗ScreenUpdatingが自動的にTrueになる yu-ji 02/10/16(水) 16:03 ┗Re:ScreenUpdatingが自動的にTrueになる rin-bon 02/10/16(水) 20:09 ─────────────────────────────────────── ■題名 : 表作成の描画時 ■名前 : rin-bon ■日付 : 02/10/16(水) 11:14 -------------------------------------------------------------------------
こんにちは。 また、悩んでいます。。。 今、VBAで表作成をしています。 一つ一つの関数毎に、題を出力する関数、線をひく関数、体裁を整える関数、 色を付ける関数等に分けています。 それで、表作成にけっこう時間がかかってしまうのですが、その描画の最中に シートを見えなくしてしまう方法はないでしょうか? Sheets("NEW").visible = false では、他のシートが見えてちらちらするので、 なんか気持ち悪いのです・・・。 他に良い方法はないでしょうか? あと、表作成中にシートが見えず、しかも作成時間が長いとほんとにちゃんと 作成されているのかなと不安になったりするのですが、 なにか良い方法はないでしょうか? |
▼rin-bon さん: > >Sheets("NEW").visible = false では、他のシートが見えてちらちらするので、 >なんか気持ち悪いのです・・・。 >他に良い方法はないでしょうか? Application.ScreenUpdating = False 処理 Application.ScreenUpdating = True とすると、画面更新を止めれます。 また、画面更新をしないですむ為、処理時間も短くなりますよ。 >あと、表作成中にシートが見えず、しかも作成時間が長いとほんとにちゃんと >作成されているのかなと不安になったりするのですが、 >なにか良い方法はないでしょうか? 簡単なので、ステータスバーに表示というのはどうでしょうか? oldStatusBar = Application.DisplayStatusBar Application.DisplayStatusBar = True Application.StatusBar = "しばらくお待ちください..." 処理 Application.StatusBar = False Application.DisplayStatusBar = oldStatusBar それぞれの詳細はScreenUpdatingとStatusBarのヘルプを確認してみてください。 |
▼yu-ji さん: 早速の回答ありがとうございます。 >Application.ScreenUpdating = False >処理 >Application.ScreenUpdating = True > >とすると、画面更新を止めれます。 >また、画面更新をしないですむ為、処理時間も短くなりますよ。 > すごいです。ほんとちらつきもしなくなるんですね。 ですが、処理の途中で、シートの追加をしたり、 NEWSheets.activate とかやっちゃうと見えちゃうようですね・・・。 しかも、その後はずっと処理経過が見えっぱなしなんですが、 一つ一つの関数に同じ処理をするしかないですか? >簡単なので、ステータスバーに表示というのはどうでしょうか? > >oldStatusBar = Application.DisplayStatusBar >Application.DisplayStatusBar = True >Application.StatusBar = "しばらくお待ちください..." >処理 >Application.StatusBar = False >Application.DisplayStatusBar = oldStatusBar > ありがとうございます。完璧です。m(__)m |
▼rin-bon さん: >ですが、処理の途中で、シートの追加をしたり、 >NEWSheets.activate >とかやっちゃうと見えちゃうようですね・・・。 > >しかも、その後はずっと処理経過が見えっぱなしなんですが、 >一つ一つの関数に同じ処理をするしかないですか? とりあえず、一連のVBAの処理が終了した時には自動的にTrueに戻る ようですが。 上記に書かれたように、シートの追加やシートをActiveにするなどでは Trueにはならないはずです。 #こちらで確認しても再現できませんでした。(Win98、Excel2000) 途中で一度VBAの処理が終了をしていたり、ScreenUpdatingをTrueにするコード を実行していないですか?(ブレイクポイントをTrueにする全ての行に置いて、 その行でブレイクしないか確認してみてください。) |
すみません・・・。 trueにしているところがありました。 直したらいい具合に動きましたぁ〜!! もう、完璧です!! って、また不具合出たりして...。 でも、めげませんよぉ〜!! ほんっとありがとうございました。v(^^)v |