No.1ベストアンサー
- 回答日時:
他に何もしなくていいんだったらこれでいくようです。
実行を中止するには Break(Ctrlを押しながらPause/Breakを押す)で止まります。
Sub test1()
Application.StatusBar = "test1 started" 'テスト用にステータスバーを書き換えています。
wait10
test2
End Sub
Sub test2()
Application.StatusBar = "test2 started"
wait10
test1
End Sub
Sub wait10()
'10秒待つサブルーチン、Waitメソッドのヘルプの丸写しです
'5分にしたいなら、newSecondではなくnewMinuteに5を足せばいいと思います。
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
End Sub
この回答への補足
実行を停止するには、breakではなく
ボタンで行いたいのですが、どの様にすればいいですか?
すんなり停止させたいのですが。。。
No.3
- 回答日時:
あえて茨の道を行ってみる。
Windowsのタイマー機能を使うことでPCとExcelにできるだけ負荷を掛けない手法。
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private hTimer As Long
Private dtNext As Date
Private strMethod As String
' 1秒ごとに呼び出されるコールバック関数
Private Sub TimerProc(hwnd As Long, uMsg As Long, idEvent As Long, dwTime As Long)
' 指定時刻を経過したら
If Now > dtNext Then
' メソッド名で分岐
Select Case strMethod
Case "test1": Call test1
Case "test2": Call test2
End Select
' 5分後を記憶
dtNext = DateAdd("n", 5, Now)
End If
End Sub
' タイマー開始(開始ボタンのクリックイベント内でこれを呼び出す)
Public Sub StartTimer()
' すでにタイマーが稼働していたら何もしない
If hTimer <> 0 Then Exit Sub
' タイマースタート、同時に5分後の時刻と最初に呼び出すメソッド名を記憶
hTimer = SetTimer(0, 0, 1000, AddressOf TimerProc)
dtNext = DateAdd("n", 5, Now)
strMethod = "test1"
End Sub
' タイマー停止(停止ボタンのクリックイベント内でこれを呼び出す)
Public Sub StopTimer()
' すでにタイマーが停止していたら何もしない
If hTimer = 0 Then Exit Sub
' タイマー停止
Call KillTimer(0, hTimer)
hTimer = 0
End Sub
Private Sub test1()
Debug.Print "test1 Called"
strMethod = "test2" ' 次回はtest2を呼ぶ
End Sub
Private Sub test2()
Debug.Print "test2 Called"
strMethod = "test1" ' 次回はtest1を呼ぶ
End Sub
この回答へのお礼
お礼日時:2009/10/06 16:25
高度でよくわかりませんが、見ながら色々やってみたいと思います。
Windowsのタイマー機能を使う方法もあったのですね。
ありがとうございます。
No.2
- 回答日時:
flg as Boolean
Sub 開始ボタン()
flg = true
s = Now
Do While flg
DoEvents
if s - Now > 「5分」Then
test1()
test2()
s = Now
End If
Wend
End Sub
Sub 停止ボタン()
flg = False
End Sub
適当に書くとこんな感じかな?
キモは、無限ループと DoEvents
後、無限ループを脱出するフラグ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBAの繰り返し処理表記と複数の処置条件について 1 2023/01/23 20:08
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) 【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力 3 2023/01/25 00:12
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETSystem.Xml 要素数を得る...
-
VB.NETからVBAマクロ(引数)を呼...
-
htmlで変数の表示
-
PHP、ヒアドキュメント内でのIF...
-
UNIX CP "で上書きしません"
-
VB6のコンボボックスのテキスト...
-
vb作成したらでbeep音が鳴りま...
-
VBA コレクションに2次元配列...
-
PHPランダム表示
-
エラーの理由が分りません。Pri...
-
ADODBで_convertObjectした結果...
-
共用体のサイズをsizeofで
-
PHPからバッチ実行
-
どういうプログラムを関数化を...
-
【シェル】case文でワイルドカ...
-
number_formatが勝手に四捨五入
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA コレクションに2次元配列...
-
エラーの理由が分りません。Pri...
-
可変変数にアロー演算子を使いたい
-
VB.NETからVBAマクロ(引数)を呼...
-
PHP、ヒアドキュメント内でのIF...
-
VB.NETSystem.Xml 要素数を得る...
-
どういうプログラムを関数化を...
-
vb作成したらでbeep音が鳴りま...
-
次のhtml・cssでspan内の文字を...
-
classの再定義エラーについて
-
既存関数の上書き
-
protectedなのにアクセスできな...
-
UNIX CP "で上書きしません"
-
PHPでの画像の形式の変換
-
配列の操作時にLNK2001外部シン...
-
PHPプログラム上で「URLを直接...
-
Let's Encryptで自動更新がされ...
-
ExcelVBAで部分一致(*)をしたい
-
VB6のコンボボックスのテキスト...
-
ASPのResponse.WriteをPHPでは...
おすすめ情報