VBAはまったくの初心者です。

仕事でExcelを使用して勤務時間表を作成しています。
出勤時間と退勤時間から一日の勤務時間を計算しているのですが 、規則で一日の勤務時間が6時間を越えたら必ず60分以上の休憩をとらないといけません。
勤務時間が6時間を超えた場合に、休憩時間の列に数値を入力する亊を促すメッセージを画面に表示したいのですが、計算式が入っているセルをもとに「文字の入力規則」コマンドが使えないことがわかり、色々調べながらVBAで作ってみたのですが、当然の事ながらうまく動作しません。

ちなみに勤務時間表は1ヶ月分で1つの表(最終行には1か月の勤務時間を求める合計の式もあります)となっていて、12か月分が1シートにそれぞれ数行空けて縦に並んでいる状態です。(これは会社の様式なので変更ができません)

最初の1ヶ月分の表の一日の勤務時間がセルF3~F33に入っていると考えて

Private Sub Worksheet_Calculate()
For t =3 To 33
If Range("F" & t).Value >= 6.5 Then
MsgBox "6時間を越えています。" & vbCr & "60分以上の休憩を入力してください。", vbCritical, "エラー"
End If
Exit For
Next
End Sub

とまで作成し、1か月分だけならこれでなんとか動作したのですが、12か月分全部についても同様のメッセージを出すにはどのようにするといいでしょうか。

どなたかお知恵をお貸しください。よろしくお願い申し上げます。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>計算式が入っているセルをもとに「文字の入力規則」コマンドが使えない


 ⇒VBAを使用しなくても「退勤時刻セル」に入力規則(ユーザ定義)を設定すれば良いと思う。
  例えば、=(退勤時刻-出勤時刻)*24<=6

  因みにこの警告は勤務完了時にアラートする意味が不明です。
  6時間超勤務時は休憩しないといけないのであれば、6時間超の場合には無条件に
  休憩時間を1時間減算すればアラートは不要ではないでしょうか。
    • good
    • 0
この回答へのお礼

mu2011様、早々のご回答ありがとうございました。
週明けに職場でこの方法で試してみます。

>因みにこの警告は勤務完了時にアラートする意味が不明です。
>6時間超勤務時は休憩しないといけないのであれば、6時間超の場合には無条件に
>休憩時間を1時間減算すればアラートは不要ではないでしょうか。

私はアルバイトの身なので詳しいことはわからず指示通りに動作するように言われているだけなのですが、この勤務表はどうやら嘱託職員用のもので年間の総勤務時間が決まっていて、1日6時間超えの勤務になった時は、60分以上何分でも自分の好きなように休憩できるそうなのです。

お礼日時:2011/04/09 17:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング