Excelで計算式が入っている入力規則の対処

このQ&Aのポイント
  • VBAを使用してExcelの入力規則で計算式が入っているセルに対処する方法を教えてください。
  • 勤務時間表で、勤務時間が6時間を超えた場合に休憩時間の入力を促すメッセージを表示したいですが、計算式が入っているセルでは文字の入力規則を使えません。
  • VBAのコードで1ヶ月分の表に対して動作するように設定できましたが、12か月分の表に対してどのように設定すれば良いでしょうか。
回答を見る
  • ベストアンサー

Excelで計算式が入っている入力規則の対処

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か月分全部についても同様のメッセージを出すにはどのようにするといいでしょうか。 どなたかお知恵をお貸しください。よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

>計算式が入っているセルをもとに「文字の入力規則」コマンドが使えない  ⇒VBAを使用しなくても「退勤時刻セル」に入力規則(ユーザ定義)を設定すれば良いと思う。   例えば、=(退勤時刻-出勤時刻)*24<=6   因みにこの警告は勤務完了時にアラートする意味が不明です。   6時間超勤務時は休憩しないといけないのであれば、6時間超の場合には無条件に   休憩時間を1時間減算すればアラートは不要ではないでしょうか。

norikapower
質問者

お礼

mu2011様、早々のご回答ありがとうございました。 週明けに職場でこの方法で試してみます。 >因みにこの警告は勤務完了時にアラートする意味が不明です。 >6時間超勤務時は休憩しないといけないのであれば、6時間超の場合には無条件に >休憩時間を1時間減算すればアラートは不要ではないでしょうか。 私はアルバイトの身なので詳しいことはわからず指示通りに動作するように言われているだけなのですが、この勤務表はどうやら嘱託職員用のもので年間の総勤務時間が決まっていて、1日6時間超えの勤務になった時は、60分以上何分でも自分の好きなように休憩できるそうなのです。

関連するQ&A

  • エクセルでデータ入力された日付と時間を自動入力する

    前回ご質問にて 1行目に何か入力したら2行目に日付と時間を自動入力する というVBAを教えて頂きました。 ------------------------ Private Sub Worksheet_Change(ByVal Target As Excel.Range) Application.EnableEvents = False If Target.Row = 1 Then Target.Offset(1, 0).Value = Format(Now, "yyyy/mm/dd"" ""hh:mm:ss") End If Application.EnableEvents = True End Sub ------------------------ これを1行目に何か入力したら2行目に日付と時間ではなく セル指定を行いたいのです。 例)F13~P13に何か入力したら、その下のセルの F14~P14に日付と時間が自動入力される という作りです。 よろしくお願いします。

  • エクセルVBAで入力規則を設定するには?

    22歳男性です。 エクセルVBAについて質問があります。 シート上にあるボタンをクリックすると、特定のセルに入力規則を追加するというプログラムを作っています。 以下のコードのように記述しているのですが、まったくうまくいきません。 何が悪いのかご指摘いただけたらと思います。 ■コード■ Private Sub CommandButton1_Click() With Range(\"b2\").Validation .Add Type:=xlValidateWholeNumber, Operator:=xlBetween, Formula1:=10, Formula2:=20 End With End Sub

  • Excel 入力規則から表の自動表示

    Excel2007で入力規則を使いリストを作成したのですが、その選んだ項目に合わせて自動的に同Sheet内に表を表示させたいんです。 文字ならIF関数とVLOOKUP関数を組み合わせたりINDIRECT関数を使ったりすれば可能かと思いますが、表の場合はどうしたらよいのでしょうか。画像化?VBA? できれば合わせて背景等の書式も参照させたいです。ちなみに入力規則のセルでは条件付きで設定しました。 ずっと格闘しています。教えてください!!

  • EXCELの入力規則について教えてください。

    1つのセルに、入力規則と数式が入ったセルがあるのですが、誤って誰かが数式を消してしまわないように、保護をかけたいのです。 しかし、保護をかけると、入力規則が動かなくなってしまうので困っています。 F3からF354が入力規則と数式が入ったセルなのですが、そのセルには下記のような式が入っています。 =IF($D3="","",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$C$354,2,0)<>0,INDEX('リスト(総合)'!$C$4:$C$354,MATCH($D3,'リスト(総合)'!$B$4:$B$354,0)),"")) で、入力規則は、「入力値の種類」が「リスト」で、「元の値」は、下記のような式が入っています。 =INDIRECT($I3) I3からI354には、下記のような式が入っています。 =IF(D3="","",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$4,"リスト(総合)!S4",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$5,"リスト(総合)!S5",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$6,"リスト(総合)!S6",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$7,"リスト(総合)!S7","名前"))))) 何かいい方法はないでしょうか? 使っているのは、Microsoft Office 2010 です。 どうぞよろしくお願いいたします。

  • VBAで入力規則の設定

    いつもお世話になっております。 VBAを勉強して3ヶ月程度の初心者です。 VBAでの入力規則の設定について質問させていただきます。 A1セルに入力規則の設定を行い、0~10までの数値を選択できるようにしたいと考えています。 Sub Test() Range("A1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation _ , Formula1:="0,1,2,3,4,5,6,7,8,9,10" End Sub とコードを記述すれば、確かに望みの仕様は満たされるのですが、複数のセルに入力規則を設定する場合、 また、リストの数が増えた場合を考えて、"1,2,3,4,5,6,7,8,9,10"を変数に出来ない?と考えて・・・ Sub Test2() Dim kazu(10) As Long kazu(0) = 0 kazu(1) = 1 kazu(2) = 2 kazu(3) = 3 kazu(4) = 4 kazu(5) = 5 kazu(6) = 6 kazu(7) = 7 kazu(8) = 8 kazu(9) = 9 kazu(10) = 10 Range("A2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation _ , Formula1:=kazu End Sub なんて事もやってみましたが・・・駄目でした。 もう一点、初期値に0を表示したい場合は、入力規則コードの後に、  Range("A1").Value=0 と表示すればよいのでしゅか? ご指導をよろしくお願いいた

  • EXCELの入力規則のリストについて。その2(IFで空白にしたセル)

    EXCEL2000で入力規則のリストを設定しています。 IF(セル番号="","",VLOOKUP(…))を使用して表を作っています。 表は途中からIFによって空白行になっています。 この表全体をリストの「元の値」に設定しているのですが、プルダウンメニューに空白が延々と表示されてしまいます。 この空白を表示させない方法はあるでしょうか? どうかよろしくお願いします。 もう1つ「EXCELの入力規則のリストについて。その1」という質問もさせていただいています。 併せてよろしくお願いします。

  • [Excel]入力規則の数式が計算されずエラー表示も出ないようになりま

    [Excel]入力規則の数式が計算されずエラー表示も出ないようになりました お世話になります。(先日もこちらではお世話になりました。ありがとうございます。) EXCEL 2007 を使用しています。 入力規則を使用して数式を実行したいと思い 初めて[入力規則]-[ユーザー設定]-[数式]欄に数式を書いて結果を得ようと してみたのですがエラーとなってしまいました。 数式に間違いがあるらしいエラーだったため何度か数式を見直し・やり直したのですが、エラーでした。 入力規則ではなく普通のセルにこの数式を入れると問題なくほしい値が帰ってくるので、 なぜ入力規則では、エラーが出るのか分かりません。 また、何度も入力規則をやり直しているうちに エラー表示ウィンドウが出なくなりました。出ないだけなら成功したと思うのですが、 エラーウィンドウが出ないだけで、数式は実行されません。 入力規則の全ての値をクリアにしてから再度 設定、式を入力しても エラー表示ウィンドウも値も出てきません。 試しにA1セルに簡単な数式を入力規則で行ってみました。 =1+2+3 とか =SUM(B1:D1) (↑値は6になる) これでもエラーも数式の結果となる値もでません。 ちなみに入力規則のリスト表示など他の機能は問題なく値が帰ってきます。 何か間違っているのでしょうか? ちなみに入力規則に記入したかった数式は↓になります   =IF(INDIRECT("F"&ROW())>0,ROW()-2," ") 数式の説明: ・もしF列のこのセルと同じ行に何か値が入っていれば【行-2】になる値を表示   A3セル 入力規則を適用   F3セル 何か値が入っている   A3セル A3といのは3行目のことだから 3-2=1 となり、計算結果の 1 が表示される ・もしF列のこのセルと同じ行に何も値が入っていなければ空欄のままにする というものです。 お分かりになる方いらっしゃいましたらご教授下さい。 よろしくお願い致します。

  • エクセル マクロを利用して繰り返して入力する方法

    マクロでA1B1C1D1E1F1セルに入力しF1入力後A2B2C2D2E2F2と 下方向へ繰り返し800行くらいまで入力し、それとB列はスキップしたいのですが下記の方法で別々のシートでは うまくいくのですが同じシ-ト内ではエラ-になってしまいます 次の行への移動 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 7 Then Cells(Target.Row + 1, 1).Select End If End Sub B列のスキップ Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("G1") <> "" Then If Target.Column = 2 Then Target.Offset(0, 1).Select End If End If End Sub どなたかご存じの方教えて下さい

  • エクセルVBAについて

    エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。

  • EXEL VBA で入力規則を変更するには

    現在去年のデータの入力作業をしていますが年月日を入力する際、 "2010/4/1"とか"2010/4/28"と打たなければならず、セルの書式設定とか 入力規則でもできません。 A3のセルにきたら"2010/"が既にはいっており、続けて"4/1"とか"4/28"とか日付だけを入力すればよいようにVBAでやれば出来ると思い、ここ2日ほどサイトとか見て勉強しましたが下記のところまが精一杯で動きません。 Private Sub Workbook_Activate() With Selection.Validation .Delete Range("A3", "A300").Select Add Type:=xlValidateDate Formula1 = "2010/mm/dd" End With End Sub どなたかご教授お願いします。

専門家に質問してみよう