社内SEの徒然なる日記

Excelで指定した時間停止するマクロの作り方

■ 時よ止まれ

Excelのマクロ(VBA)で、一定時間処理を停止したいことがあります。

Application.Waitというメソッドを使えば可能なのですが、このメソッドの引数は日時なので、何秒間停止するという使い方をしたい時には、現在の日時に停止したい時間を加算するという工夫が必要です。

面倒なので、処理を作っちゃいました。



' 機能 : 指定した秒数処理を停止する。
'
' 返り値 :
'
' 引き数 : pStopSecond - 停止する秒数
'
' 機能説明 : マクロの実行を指定した秒数停止する。
'

Public Sub kStopTime(Optional ByRef pStopSecond As Integer)

'変数
Dim myWaitTime As Variant '処理を再開する時刻
Dim myStopSecond As Integer '計算用変数(秒)

'引数を転記
myStopSecond = pStopSecond

'引数の値が0(未指定)の場合は1を設定
If myStopSecond = 0 Then
myStopSecond = 1
End If

'現在の時刻に指定した停止する秒数を加算
myWaitTime = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + myStopSecond)

'指定した時刻まで処理を停止
Application.Wait myWaitTime

End Sub


引数 pStopSecond には停止したい秒数を指定します。Optionalを付けて引数の省略を可能にしときます。

後は、TimeSerial関数を利用して現在の時刻に引数で指定した秒数を加算した時刻を作成し、それをApplication.Waitメソッドの引数として渡してやります。

これでOK!

■ 後書き

Application.Waitメソッドの本来の用途は、指定した時刻になったら処理を実行するってことなんでしょうが、それをExcelマクロで実現するのかって事に疑問を感じます。

まぁ、VBAも馬鹿に出来ない機能があるので色々と出来るのは分かるのですが、Windows95&Excel95の時代からExcelで色々と作ってきた身からすると凄く怖いです。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---

スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する