SSブログ

エクセル小僧:勤務時間計算(徹夜対応版) [コンピューター]

出社時刻(例:「9:30」)、退社時刻(例:「8:30」)から、勤務時間を計算するマクロです。

解説はしません。。暇が無いので。。すみません。。

Sub test()
  ' 出社時刻(例:「9:30」)、退社時刻(例:「8:30」)から、勤務時間を計算
  ' 退社時刻が「0:00」から「8:30」までの場合、翌日退社として扱う
  ' 「2:15」から「2:30」の間を休憩時間とし、勤務時間から引く
  ' 出社「9:30」、退社「8:30」の場合⇒勤務時間「22:45」
  Dim time1(5) As Date ' 日付シリアル値
  Dim i As Integer ' 整数
  time1(0) = CDate(Range("A23").Value) ' 出社時刻 例:「9:30」
  time1(1) = CDate(Range("B23").Value) ' 退社時刻 例:「8:30」
  time1(2) = TimeSerial(0, 0, 0) ' 0時0分
  time1(3) = TimeSerial(8, 30, 0) ' 8時30分
  ' 2014/1/1を足す
  For i = 0 To 3
    time1(i) = time1(i) + DateSerial(2014, 1, 1)
  Next i
  ' 退社時刻が「0時0分」から「8時30分」なら、1日ずらす
  If (time1(1) >= time1(2)) And (time1(1) <= time1(3)) Then
    time1(1) = DateAdd("d", 1, time1(1))
  End If
  If time1(1) >= time1(0) Then
    time1(5) = time1(1) - time1(0) ' 勤務時間(休憩時間込み)
    Range("D23").Value = time1(5)
  End If
  ' 出社した日の0時0分0秒
  time1(2) = DateSerial(Year(time1(0)), Month(time1(0)), Day(time1(0)))
  ' 出社した翌日の2時15分0秒
  time1(3) = DateAdd("d", 1, time1(2)) + TimeSerial(2, 15, 0)
  ' 出社した翌日の2時30分0秒
  time1(4) = DateAdd("d", 1, time1(2)) + TimeSerial(2, 30, 0)
  ' 条件1 : 出社時刻が、出社した翌日の2時15分0秒以前である
  ' 条件2 : 退社時刻が、出社した翌日の2時30分0秒以後である
  ' 条件1と条件2の両方が真の場合、2時15分 - 2時30分の休憩時間を引く
  If (time1(0) <= time1(3)) And (time1(1) >= time1(4)) Then
    time1(5) = time1(5) - TimeSerial(0, 15, 0)
  End If
  Range("C23").Value = time1(5)
End Sub

※出社時刻、退社時刻に2014/1/1を足してますが、必要ないかもしれません。足さないとコンピュータが扱える日付の一番古い値(1900/1/1?)になってしまうのが気持ち悪いので足しています。[猫]

このごたごたが片付いたら、こんなの買おうかな。。









ヤバイぜ!(23)  コメント(2)  トラックバック(0) 
共通テーマ:日記・雑感

ヤバイぜ! 23

ヤバイぜ!の受付は締め切りました

コメント 2

なんだかなぁ〜!! 横 濱男

就業時間は、
しっかり記録に残して置いた方がいいですよ。
イザと言うときに、助けになりますからね。。
昔のプリメインアンプを持っています。
捨てられない・・・
by なんだかなぁ〜!! 横 濱男 (2014-04-06 21:11) 

cheese999

なんだかなぁ〜!! 横 濱男さん、
アドバイスありがとうございます。記録だけはとってあります。
カセットデッキとMDデッキは処分しましたが、CDプレーヤーとプリメインアンプはうちでも現役です。

「やったぜ!」 ありがとうございます。[__猫]
by cheese999 (2014-04-07 05:35) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。