【Access】開始時刻から終了時刻までの時間の計算をする方法

 

アクセス担当のまみです。

 

作業時間の計算や勤務時間の管理等様々な場面で、時間の計算が必要になる時がありますね。

そんな時に手作業で時間の計算をするのはとっても大変です。

 

開始時刻と終了時刻の入力であとは自動計算してくれたらとっても助かりますね。

 

今回は時間の計算についてお伝えしますね。

 

Contents

テーブルを準備する

 

(はてな君)
開始時刻と終了時刻が入力されている「T_時間管理」ってテーブルがあるんだけど、経過時間の計算がしたいんだ。

 

「T_時間管理」

 

(あいちゃん)
定型入力で時刻の表示にしてあるんだね。

 

(はてな君)
そう。開始時刻と終了時刻の両方に定型入力の設定をしたんだ!

 

 

定型入力の設定をするには「T_時間管理」をデザインビューで開き定型入力の①を左クリックします。

 

表示されたメッセージは「はい(Y)」を左クリックします。

 

「時刻(L)」を選択して「完了(F)」を左クリックします。

 

クエリで経過時間の計算をする

 

(はてな君)
でね、クエリで「終了時刻」から「開始時刻」を引く計算式を作ってみたんだけど。

 

(あいちゃん)
どうだった?

 

(はてな君)
なんかものすごい桁数の数字が表示された。

 

 

 

(あいちゃん)
単純に引き算するだけだとそうなるんだけど、その表示を「hh:mm:ss」の形にしてくれる関数があるんだよ。2つ紹介するね!

 

構文
FormatDateTime(Date[,NamedFormat])
[ ]内は省略可能です。

NamedFormatには設定があって、省略すると値0の設定になります。

 

説明
0 日付と時刻を表示。日付があると短い日付として表示され、時刻があると長い日付として表示。両方あれば両方の表示。
1 長い日付の書式として表示
2 短い日付の書式として表示
3 時刻の書式で表示
4 24時間(hh:mm)の書式で表示

 

 

構文
CDate(date)

指定した式を日付の形で返してくれます。

 

(はてな君)
ふ~んこの2つの関数が「hh:mm:ss」の形にしてくれるんだ~。

 

 

 

Format: FormatDateTime([終了時刻]-[開始時刻])

CDate: CDate([終了時刻]-[開始時刻])

 

 

(はてな君)
両方使ってみたよ!
FormatDateTimeって長いからフィールドはFormatにしてみた。

 

 

(はてな君)
時間の計算ができたよ!手作業でしないといけないかと思ってたから良かった!
経過時間の計算ってフォーム上でもできるよね?やってみようっと。

 

クエリは「Q_時間計算」と名前をつけておきましょう。

 

[quads id=2]

 

フォームで経過時間の計算をする

 

 

フォームにテキストボックス3つとボタンを1つ配置します。

 

ラベルの標題 テキストボックスの名前
開始時刻 tx開始
終了時刻 tx終了
経過時間 tx経過

 

ボタンの標題 ボタンの名前
計算 btn計算

 

 

①「btn計算」を選択した状態でプロパティーシートの②「イベント」タブからクリック時に「イベントプロシージャ」を選択してコードの画面を表示します。

 

「Private Sub btn計算_Click()」と「End Sub」の間に下記のコードを追加しましょう。

Dim check1 As Variant
Dim check2 As Variant

check1 = CDate(Nz(Me.tx開始.Value))
check2 = CDate(Nz(Me.tx終了.Value))

Me.tx経過.Value = CDate(check2 - check1)

 

 

コードをコピーされたい場合は下記の記事を参考にしてください。

関連記事

 

 

(はてな君)
さっそくフォームビューで開始時刻と終了時刻を入力して「計算」押してみた!

 

 

(はてな君)
もうひとつのFormatDateTimeもやってみたんだけど、「型が一致しません」ってエラーが出てできなかったんだけど?

 

(あいちゃん)
そうなんだよね。クエリでは使えるんだけどね・・・引数の問題かなって色々やってみたんだけどできないんだよね。だから知ってたら教えて欲しいんだ。

 

(はてな君)
そうなんだ。あいちゃんも知らないんだね。もしかして使えないのかな?

 

(あいちゃん)
そうかもしれないね。
なので、CDateを使ってね!

 

時間の計算をボタン1つでやってくれるととっても助かりますね。

 

まとめ

 

時間の計算って手作業ではちょっと難しいですね。

 

クエリやフォームで自動で計算してくれたらとっても助かります。

色々な場面で活躍してくれること間違いなしですね!

 

 

スポンサーリンク