アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelでタイマーを作ったけど、一時停止できないとやっぱ面白くないと気づき、一時停止機能を付け加えたいが、まだ勉強し始めたばかりなので自分でコードが書けません。

なので、一時停止させるコードがわかる方教えてください。

<タイマーのコード>
Sub タイマー()

Dim EndTime
Dim PassTime

EndTime = Timer + Range("D5").Value * 60 + Range("F5").Value


Do

PassTime = Timer
Range("D5").Value = (EndTime - PassTime) \ 60 '分
Range("F5").Value = (EndTime - PassTime) Mod 60 '秒
DoEvents
Loop Until EndTime - PassTime <= 0

Beep

MsgBox "時間です"

End Sub

A 回答 (1件)

#1さんのように突っぱねることが、本来は親切なのだと思います。

ただ、掲示板というのは、締め切りはあっても、書かれたものは、時間というものが存在しない世界(一期一会)ですから、回答をせざるを得ないのは、ご容赦願います。

以下は、ある程度マクロが書ける人なら、考えつくはずです。
本来は、マクロの実行中に、割り込みが利かないのですが、なぜ可能なのか分かりますか?
それが分かりさえすれば、割り込み方法も思いつきます。

'//
Dim blnSw As Boolean 'スイッチ
Private Sub CommandButton1_Click()
 Dim EndTime As Double
 Dim PassTime As Double
 EndTime = Timer + Range("D5").Value * 60 + Range("F5").Value
 Do
  PassTime = Timer
  Range("D5").Value = (EndTime - PassTime) \ 60 '分
  Range("F5").Value = (EndTime - PassTime) Mod 60 '秒
  DoEvents
  If blnSw Then blnSw = False: Exit Sub
 Loop Until EndTime - PassTime <= 0
 Beep
 MsgBox "時間です"
End Sub

Private Sub CommandButton2_Click()
'途中で止める
 blnSw = True
End Sub
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!