- 締切済み
タイムレポートの普通残業時間について
お世話になります。 Excel2007でタイムレポートを作成しております。 VBAで構文を作成しました。 30分以上で、残業発生。以降10分単位。29分は残業ではないというのが条件であります。 30分なら0:30 29分なら表示させない。35分ら0:30、40分なら0:40といった形です。 30分以上なら、普通残業を計算をするという構文を書いたのですが、 10分以上から0:10と表示されてしまいます。 8:30が定時、17:00が終了です。7:45が就業時間です。 普通残業は、17:00から22:00です。8:30分より早く来ても、8:30分から計算します。 たとえば、8:30 17:30なら、 7:45 0:30、 8:30 17:45なら 7:45 0:40です。 17:29なら普通残業は、表示させないようにしたいと思います。 →現状、0:20と表示されてしまいます。 ----------------------------------------------------------------------------- Public Sub CmpKintaiTime(prmINTIM, prmOUTTIM, prmKNMKBN, rtnSYUGYO, rtnHAYZAN, rtnFUTZAN, rtnSINZAN, rtnTIKOKU, rtnSOUTAI, rtnKYUZAN, rtnKYUSIN) '************************************************** ' 勤怠時間 算出 '************************************************** On Error GoTo ErrorTrap Dim wINTIM As Integer Dim wOUTTIM As Integer Dim wSTRTIM As Integer Dim wENDTIM As Integer Dim wSYUGYO As Variant Dim wFUTZAN As Variant Dim wSINZAN As Variant Dim wHAYZAN As Variant Dim wTIKOKU As Variant Dim wSOUTAI As Variant Dim wTIKOKUw As Variant Dim wSOUTAIw As Variant Dim wKYUZAN As Variant Dim wKYUSIN As Variant Dim wLower As Integer Dim wUpper As Integer Dim wIdx As Integer If IsTime(prmINTIM) = False Then GoTo ExitTrap End If If IsTime(prmOUTTIM) = False Then GoTo ExitTrap End If '時刻を分換算 wINTIM = Hour(prmINTIM) * 60 + Minute(prmINTIM) wOUTTIM = Hour(prmOUTTIM) * 60 + Minute(prmOUTTIM) '日付が変わった時刻は24時間加算 If wINTIM >= wOUTTIM Then wOUTTIM = wOUTTIM + (24 * 60) End If If wOUTTIM > khnENDTIM Then If wOUTTIM <= khnSTRFZN Then wOUTTIM = khnENDTIM Else If wOUTTIM > khnENDFZN Then If wOUTTIM <= khnSTRSZN Then wOUTTIM = khnENDFZN Else If wOUTTIM > khnENDSZN Then wOUTTIM = khnENDSZN End If End If End If End If End If wSYUGYO = Null wFUTZAN = Null wSINZAN = Null wHAYZAN = Null wTIKOKU = Null wSOUTAI = Null '就業時間算出 If wINTIM < khnSTRTIM Then wSTRTIM = khnSTRTIM Else wSTRTIM = wINTIM End If If wOUTTIM > khnENDTIM Then wENDTIM = khnENDTIM Else wENDTIM = wOUTTIM End If If wENDTIM > wSTRTIM Then wSYUGYO = wENDTIM - wSTRTIM Else wSYUGYO = 0 End If If prmKNMKBN <> 1 Then '平日のみ '遅刻 If wINTIM > khnSTRTIM Then wTIKOKU = wINTIM - khnSTRTIM End If '早退 If wOUTTIM < khnENDTIM Then wSOUTAI = khnENDTIM - wOUTTIM End If End If '早出残業算出 (始業時刻より早出残業判断分前に出勤した場合、早出を算出) If wINTIM <= (khnSTRTIM - khnHAYFUN) Then wHAYZAN = khnSTRTIM - wINTIM End If '普通残業算出 wFUTZAN = wOUTTIM - wINTIM - wSYUGYO If wFUTZAN >= 30 Then wFUTZAN = wOUTTIM - wINTIM - wSYUGYO End If ご教授くださいますようお願い申し上げます。 文章が長くて、最後まで読んでくださってありがとうございます。 お手数をおかけしますが、ご教授くださいますようお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
- doara_2011
- ベストアンサー率59% (25/42)
- edomin7777
- ベストアンサー率40% (711/1750)