- ベストアンサー
Accessで作業日報を効率的に管理する方法
- Accessを使用して作業日報を効率的に管理する方法について質問です。
- 名前、開始時間、完了時間、休憩時間、勤務時間、残業時間、工数などの情報を入力するフォームを作成し、VBAを使用して勤務時間や残業時間を自動的に計算する方法について教えてください。
- 作業日報の時間計算に関して、クエリではうまく表示できたが新規入力ができなかったため、VBAを使用した方法が良いのではないかと考えています。VBAに関する書き方がわからないため、具体的なコードの助けをお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
テキストボックスが以下のようになっていて休憩は必ず取るという設定です。 開始時間:ST 時刻(S) 完了時間:ET 時刻(S) 勤務時間:kinmu 数値型 残業時間:zan 数値型 工数:kousu 数値型 休憩時間は1(時間)で固定と判断して処理。 ---- Private Sub コマンド1_Click() kyukei = 1: '休憩時間 1時間 tuujou = 8: '通常勤務時間 8時間=1工数 kinmu = (ET - ST) * 24 - kyukei: '総勤務時間 kousu = kinmu / tuujou: '工数算出 '総勤務時間が通常勤務時間以下の場合、 '残業時間は0、勤務時間は総勤務時間。 '総勤務時間が通常勤務時間より大きい場合、 '残業時間=総勤務時間-通常勤務時間 勤務時間=通常勤務時間 If kinmu <= tuujou Then zan = 0 Else zan = kinmu - tuujou kinmu = tuujou End If End Sub
その他の回答 (2)
- shut0325
- ベストアンサー率40% (490/1207)
shut0325です。 >もし休憩時間は1時間ではなく、忙しい日には30分しか休憩してない場合なら、どうすればいいでしょうか? その場合は、その休憩時間のテキストボックスの名前を kyukei として、 コードの中の、 kyukei = 1: '休憩時間 1時間 これを消してください。 規定値が1との事ですので、例えば30分なら0.5という入力になります。
お礼
ありがとうございます。 うまく解決できました。 今後もよろしくお願いします。
- shut0325
- ベストアンサー率40% (490/1207)
shut0325です。 前回のコードは実際に製作したコードをそのまま転載ものです。 念のため、最初から作って、前回のコードをペーストして作りましたが、 同じように動作しました。 下記の点、ご確認お願いします。 1.テキストボックスの「名前」(ラベルの「標題」ではない) 開始時間→ST 完了時間→ET 勤務時間→kinmu 残業時間→zan 工数→kousu 2.データの型 ST及びET のみ「時刻(s)」 3.データの入力。 24時間の時刻型で必ず半角入力してください。 例 17:00 9:00
お礼
Shut0325様 できました。大変助けました。 も一つ伺ってもよろしいでしょうか? もし休憩時間は1時間ではなく、忙しい日には30分しか休憩してない場合なら、どうすればいいでしょうか? 一応休憩時間のテキストボックスに設置して、規定値は1にしています。 よろしくお願いします。
お礼
ご回答、ありがとうございます。 早速コードに入れてみましたがうまく計算できなかったです。 開始時間と完了時間を入力しても、勤務時間・工数・残業時間に0になっています。 しかし、したいことは開始時間と完了時間のテキストボックスに入力すると自動的に工数と残業時間も計算できて、それぞれのテキストボックスを表示するようにできたらベストです。 実行ボタンを押すより、勤務時間のテキストボックスのフォーカス取得後のイベントにコードを入れたら、いけるのでしょうか? 恐縮ですがよろしくお願いします。