vbaにて勤怠表を作っているのですが、時刻と時間の区別はどのようにするのでしょうか。 初歩的な質問でしたら、どうかご容赦ください。 項目には出勤時間、休憩時間、退勤時間、勤務時間、他(省略します)があるのですが、 退勤時間から出勤時間を引いた時間をmyTimeとして、myTimeに応じて休憩時間の判定を行ないたいです。 myTimeが4時間未満で休憩時間0分 4時間以上6時間未満で休憩時間30分 6時間以上8時間未満で休憩時間45分 8時間以上で休憩時間は1時間 の時間を休憩時間セルに入力させたいのですが、myTimeが時刻から変えられず困っています。 恐らく、8時より前か後か、といったような判断をしているのだと思います。 ちなみにセルには別のExcel関数が入っていて、マクロを実行するときに関数を無視して(上書きして)入力させたいので、Excel関数での提案は今の所考えておりません。 コードの書き方を教えてくださいませんでしょうか。 現在の表記がh:mmになっている為、これで統一出来れば嬉しいです。 このあと勤務時間の集計も行なう為、時間の計算方法なども教えて頂けると助かります。 (一応自力で調べてみてはいるものの、まだ理解には及びません。) Dim STAR_TIME As Date Dim RECESS_TIME As Date Dim myTime As Date STAR_TIME = Cells(0, STAR_CL) '出勤時間の行です LAST_TIME = Cells(0, LAST_CL) '退勤時間の行です myTime = LAST_TIME - STAR_TIME With Cells(0,RECESS_CL) '休憩時間の行です If myTime >= Format(Time, "8:00") Then .Value = Format(Time, "1:00") ElseIf Format(Time, "8:00") > myTime And myTime >= Format(Time, "6:00") Then .Value = Format(Time, "00:45") ElseIf Format(Time, "6:00") > myTime And myTime >= Format(Time, "4:00") Then .Value = Format(Time, "00:30") ElseIf Format(Time, "4:00") >= myTime Then .Value = Format(Time, "0:00") End If End With 記号(大なり、小なり)の挙動もいまいち理解出来ていません。 何度も試してみて今の位置にしてみたのですが、 いろいろ試して変えまくって、なんだかよく分からなくなってきました。正直合っている気はしないです。 実際にはもうすこし長いコードですが、必要そうな所だけ書き出しました。 私のミスで足りないところがあるかもしれません。必要であれば書き足します。 作成はExcel for mac 2011ですが、 実際に運用するのはWindowsの各Excelバージョン(複数)の為、 互換性のあるコードで教えてください。宜しくお願い致します。
↧