Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (07) 時間の差分を計算する

 
(07) 時間の差分を計算する

 プログラムの処理時間を計測したい場合や、長時間プログラムを1時間で打ち切る処理をプログラムで実現するには、時間の差分を計算する必要があります。ここでは、VBAにて、時間の差分を計算する方法を紹介します。

 下記サンプルコードは、Excelのセル"A1"〜"A65536"の範囲に、Excel関数のRow() 関数を記載する処理の実行時間を計算するサンプルです。

 1行目:  Public Sub Sample_Time_01()
 2行目:  
 3行目:      Dim StartTime As Date
 4行目:      ' プログラム実行と同時に、開始時刻を取得する。
 5行目:      StartTime = Now()
 6行目:      
 7行目:      ' セル"A1"〜"A65536"まで"=Row()"を記載する。
 8行目:      Dim lp As Long
 9行目:      For lp = 1 To 65536
10行目:          Range("A1").Offset(lp - 1, 0).Formula = "=Row()"
11行目:      Next
12行目:  
13行目:      ' プログラム開始時刻と終了時刻の差分を秒単位で計算する。
14行目:      MsgBox DateDiff("s", Now(), StartTime) & "[秒]"
15行目:      
16行目:  End Sub
このサンプルコードを実行すると、以下の結果が返ってきます。
ここでは、処理の先頭と最後でNow() 関数を用いて時刻を取得し、処理終了時にその時刻の差分をDateDiff() 関数を用いて計算しています。
 Now() 関数とDateDiff() 関数を紹介します。

Now()現在の日付と時刻をの値を返す関数
DateDiff(間隔,日付1,日付2){日付1}と{日付2}の差分を{間隔}に従った単位で計算する関数
DateDiff() 関数の{間隔}で指定できる文字列は、以下の通りです。
DateDiffの間隔意味
yyyy
q四半期
m
y年間通算日
d
w週日
ww
h
n
s

 日付の差分は、DateDiff() 関数を用いなくても、単なる引き算で調べることができます。

 1行目:  Public Sub Test_Diff_Date_01()
 2行目:      Debug.Print CDate("2008/5/20") - CDate("2008/5/10")
 3行目:  End Sub

 但し、注意が必要です。日付の差分を時分秒を意識して計算したい場合、単なる引き算では、正しい結果が得られません。

 1行目:  Public Sub Test_Diff_Date_02_NG()
 2行目:      Debug.Print CDate("2008/5/20 00:01:00") - CDate("2008/5/10 00:00:00")
 3行目:  End Sub

 1分は、1/(24×60)日です。これを考慮して、DateDiff()関数を次のように使えば、正しい結果が得られます。

 1行目:  Public Sub Test_Diff_Date_03()
 2行目:      Debug.Print DateDiff("n" _
 3行目:              , CDate("2008/5/10 00:00:00") _
 4行目:              , CDate("2008/5/20 00:01:00") _
 5行目:              ) / 24 / 60
 6行目:  End Sub
ページの先頭へ