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ランキング
-
CSVファイルをブラウザのキャッ...
-
VBA コレクションに2次元配列...
-
エラーの理由が分りません。Pri...
-
可変変数にアロー演算子を使いたい
-
PHPの変数値をリンクさせたい
-
file_existsが動作しない
-
既存関数の上書き
-
VB.NETからVBAマクロ(引数)を呼...
-
PHPの名前空間インポートについて
-
特定日時の○○秒後の日時をだしたい
-
DTOとEntityの差は何ですか。
-
Dosブロンプトでtabを出力したい
-
Yahoo! JAPAN IDを新規取得でき...
-
「取得先」という表現について
-
小数点以下0の非表示
-
オブジェクトの中身の判定(PHP)
-
excel access連携 このテーブル...
-
switch()文で値の大小比較
-
【C#】DataGridViewの最大列数...
-
バッチファイルでpingの結果を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA コレクションに2次元配列...
-
エラーの理由が分りません。Pri...
-
可変変数にアロー演算子を使いたい
-
VB.NETからVBAマクロ(引数)を呼...
-
PHP、ヒアドキュメント内でのIF...
-
VB.NETSystem.Xml 要素数を得る...
-
vb作成したらでbeep音が鳴りま...
-
どういうプログラムを関数化を...
-
次のhtml・cssでspan内の文字を...
-
classの再定義エラーについて
-
既存関数の上書き
-
protectedなのにアクセスできな...
-
UNIX CP "で上書きしません"
-
配列の操作時にLNK2001外部シン...
-
PHPでの画像の形式の変換
-
PHPプログラム上で「URLを直接...
-
ExcelVBAで部分一致(*)をしたい
-
Let's Encryptで自動更新がされ...
-
VB6のコンボボックスのテキスト...
-
ASPのResponse.WriteをPHPでは...
おすすめ情報