Excel VBA質問箱 IV

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

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


61941 / 76732 ←次へ | 前へ→

【19402】Re:ワンクリックで停止させる良い方法
回答  Kein  - 04/10/31(日) 13:22 -

引用なし
パスワード
   ご希望のものとは少し違うかも知れませんが、以前に他の掲示板で回答した内容を
貼り付けておきます。使えそうならちょっと改造するだけで済みますが・・。
----------------------------------------------------------------------
>キーを押すか、マウスが動くまで(スクリーンセーバーを解除する時と同じように)
>5秒ごとに音を鳴らし続ける
というコードは、いくつか考えられます。まず EnableCancelKeyの設定で
Escボタンが押されたことを検出し、xlInterrupt で即中止するかループを抜けて
エラー処理ルーチンへ飛ばす方法、これはキーを押すタイミングが、ループ内の
DoEvents で、OSに制御が移ったタイミングに合わないと動作がおかしくなるので、
一番ダメな方法です。次に OnTime で5秒後にマクロを呼び出し、音を出してから
呼び出し元のプロシージャを再帰呼び出しする方法ですが、これもやや不安が残ります。で、最も単純で確実だと考えたのが、以下のようなコードです。

Sub Test_TimeInt() 
 Dim WshShell As Object
 Dim I As Integer, Ans As Integer

 Set WshShell = CreateObject("WScript.Shell")
 For I = 1 To 5   
   Beep   
   Ans = WshShell.Popup("マクロを中止しますか", 5)
   If Ans = 1 Then Exit For
 Next I 
 Set WshShell = Nothing: MsgBox "終了", 64
End Sub

これは、表示時間を制御できるメッセージボックスを出し、出ている間に OK を
クリック(キーなら Enterを押す)することで、ループを抜けるというものです。
メッセージは5秒間表示します。そのまま放っておくと自動的に引っ込んで、次の音を
鳴らします。5回繰り返したら終了するというわけです。
1 hits

【19400】ワンクリックで停止させる良い方法 kobasan 04/10/31(日) 8:30 質問
【19402】Re:ワンクリックで停止させる良い方法 Kein 04/10/31(日) 13:22 回答
【19403】Re:ワンクリックで停止させる良い方法 kobasan 04/10/31(日) 14:18 お礼
【19426】Re:ワンクリックで停止させる良い方法 kobasan 04/11/1(月) 19:29 お礼

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