Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12848 / 13644 ツリー ←次へ | 前へ→

【8338】コマンドボタン 初心者 03/10/9(木) 14:30 質問
【8339】Re:コマンドボタン コロスケ 03/10/9(木) 14:39 回答
【8340】Re:コマンドボタン 初心者 03/10/9(木) 14:59 発言
【8341】Re:コマンドボタン コロスケ 03/10/9(木) 15:08 回答
【8342】Re:コマンドボタン コロスケ 03/10/9(木) 15:16 回答
【8348】Re:コマンドボタン 初心者 03/10/9(木) 19:07 お礼
【8343】Re:コマンドボタン Kein 03/10/9(木) 16:04 回答
【8349】Re:コマンドボタン 初心者 03/10/9(木) 19:18 お礼

【8338】コマンドボタン
質問  初心者  - 03/10/9(木) 14:30 -

引用なし
パスワード
   度々お邪魔致します。

コマンドボタンの画面表示に関して教えて頂けないでしょうか。

コマンドボタンのクリックによって、処理が実行されます。
その際、処理中のシート遷移を非表示にするため、処理の最初に

Application.ScreenUpdating = False

と記述しています。
これが影響しているのか、コマンドボタンをクリックすると、
ボタンが凹んだ状態で画面表示が停まり、処理が終了するまで
そのままの状態です。

上記制御の前に
・Application.ScreenUpdating = True
・DoEvents(最大6個連続記述) ←確かVBではこれで解決されたと思いますが・・・
・Wait
・セルの値を変数に取得
を記述してみましたが、解決しませんでした。

どなたか、コマンドボタンの表示を元の状態に戻す方法を
ご存知ではないでしょうか?
宜しくお願い致します。

【8339】Re:コマンドボタン
回答  コロスケ E-MAILWEB  - 03/10/9(木) 14:39 -

引用なし
パスワード
   ▼初心者 さん:

>Application.ScreenUpdating = False
Application.ScreenUpdating = True
をこの上の行にも入れてみてください。

ではー♪

【8340】Re:コマンドボタン
発言  初心者  - 03/10/9(木) 14:59 -

引用なし
パスワード
   ▼コロスケ さん:
回答ありがとうございます。

>>Application.ScreenUpdating = False
>Application.ScreenUpdating = True
>をこの上の行にも入れてみてください。


Application.ScreenUpdating = Falseの直前の行(処理の最初)に、
以下の記述をして、それぞれ試してみましたが、いずれもダメでした。

・Application.ScreenUpdating = True
・DoEvents(最大6個連続記述) 
・Wait
・セルの値を変数に取得

シート遷移やデータコピー等、目が痛くなるような処理なので、
最初にApplication.ScreenUpdating = Falseとしているのです。

【8341】Re:コマンドボタン
回答  コロスケ E-MAILWEB  - 03/10/9(木) 15:08 -

引用なし
パスワード
   だめでしたか。私の環境ではうまくいきましたが、他の方の回答も待ちましょう。
ちなみに上手くいった例です。
Excel2000+Windows2000

Private Sub CommandButton1_Click()
  Application.ScreenUpdating = True '←これを追加
  Application.ScreenUpdating = False
  Application.Wait Now + TimeSerial(0, 0, 2)
  Application.ScreenUpdating = True
  MsgBox "完了"
End Sub

【8342】Re:コマンドボタン
回答  コロスケ E-MAILWEB  - 03/10/9(木) 15:16 -

引用なし
パスワード
   ActiveCell.Activateを入れるのは邪道でしょうか?(笑)

Private Sub CommandButton1_Click()
  ActiveCell.Activate
  Application.ScreenUpdating = False
  Application.Wait Now + TimeSerial(0, 0, 2)
  Application.ScreenUpdating = True
  MsgBox "完了"
End Sub

【8343】Re:コマンドボタン
回答  Kein  - 03/10/9(木) 16:04 -

引用なし
パスワード
   >処理中のシート遷移を非表示にするため
Sheets("X").Select とか Sheets("X").Activate などの記述をやめて、
セル範囲の参照とする書き方に変更して下さい。

Sheets("X").Range("A1:C1").Value = "TEST"

などのように。そうすれば画面を止めたままで処理ができるし、効率も良く
なります。Select や Active をしない書き方を練習しないと、いつまでも
初心者の域を出られません。

【8348】Re:コマンドボタン
お礼  初心者  - 03/10/9(木) 19:07 -

引用なし
パスワード
   ▼コロスケ さん:
回答ありがとうございます。

>ActiveCell.Activateを入れるのは邪道でしょうか?(笑)

教えて頂いた通り、セルをActivateやSelectする処理を記述すると
ボタンが凹んだ状態ではなくなりました。
ありがとうございました。

【8349】Re:コマンドボタン
お礼  初心者  - 03/10/9(木) 19:18 -

引用なし
パスワード
   ▼Kein さん:
回答ありがとうございます。

>>処理中のシート遷移を非表示にするため
>Sheets("X").Select とか Sheets("X").Activate などの記述をやめて、
>セル範囲の参照とする書き方に変更して下さい。

異なるブック間でのコピー処理の際、コピー元のブックをActivateしないと
上手くCopy処理が機能しなかったという経緯があったのですが、
これも別に原因があるということですね。
検証してみます。


>Sheets("X").Range("A1:C1").Value = "TEST"
>
>などのように。そうすれば画面を止めたままで処理ができるし、効率も良く
>なります。Select や Active をしない書き方を練習しないと、いつまでも
>初心者の域を出られません。

痛いところを突かれた感じです。
勉強も兼ねて、Activateを使用しない記述に書き換えてみます。

12848 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free