dポイントプレゼントキャンペーン実施中!

エクセルのVBAを使ってやっているのですが、セルの値を40秒毎に1づつ上げ、ボタンで一時停止、再開,リセットという感じをつくりたいのですがなかなかできず困ってます。
どなたか教えて下さい。宜しくお願い致します。
エクセル2019、Win10
ちなみに今こんな感じでいれていてセルの値は1づつ上がります。
Dim SchTime As Date
Sub Test()
With Sheets(1)
.Range("A1").Value = .Range("A1") + 1
End With
SchTime = Now + TimeSerial(0, 0, 40)
Application.OnTime SchTime, "test"
End Sub

A 回答 (2件)

以下のようにしてください。


一時停止のボタンはsub 一時停止に割り当ててください。
再開のボタンはsub 再開に割り当ててください。
リセットのボタンはsub リセットに割り当ててください。
(リセットの意味はセルAの値のリセットと解釈しました)
--------------------------------------
Dim SchTime As Date
Dim execFlag As Boolean
Sub Test()
If execFlag = False Then Exit Sub
With Sheets(1)
.Range("A1").Value = .Range("A1") + 1
End With
SchTime = Now + TimeSerial(0, 0, 40)
Application.OnTime SchTime, "test"
End Sub

Sub 一時停止()
execFlag = False
End Sub

Sub 再開()
execFlag = True
Call Test
End Sub

Sub リセット()
With Sheets(1)
.Range("A1").Value = ""
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。おかげで解決いたしました。

お礼日時:2021/04/05 15:15

こんにちは



>ボタンで一時停止、再開,リセットという感じをつくりたいのですが
>なかなかできず困ってます。
各ボタン押し下げ時の処理(=Sub)やご提示のカウントアップの処理を連携させる必要があります。
概ね以下のような感じで、実現できるのではないかと思います。


まず、シートモジュール共通の変数(=flag)を追加で定義しておきます。
そのうえで、各処理を以下のようなものにします。

1)ご提示のカウントアップ(=Test)を、flagを参照してFalseの場合はカウントアップ及び再コールをしないように修正します。(Trueの場合のみ実行)

2)再開(開始)ボタンの処理
 flagをTrueにセットし、40秒後にTestをコール

3)一時停止ボタンの処理
 flagをFalseにセット

4)リセットボタンの処理
 カウンタ(=A1セル)の値を初期値(=0とか1など?)にセットします。
 (必要ならば、flagもFalseにセットします。)
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2021/04/05 15:15

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