• ベストアンサー

日曜日は入力させたくない

現在、食事管理票を作成しており、日付によって塗りつぶしを行う条件付き書式と データの入力規則を使って、○、✕、-のリストを作成し洗濯入力させている これらはいかしたまま 追加で、該当入力箇所が日曜日であれば、入力をできなくする または、-しか入力できないようにしたいのですが データの入力規則でリストを使っているため、ユーザー設定が使えず 「両立」は無理なのかと諦めかけております 打開策があれば、お教えいただきたいです

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

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

[No.2]の補足、 》 該当入力箇所が日曜日であれば、入力をできなくする セル A5 に式 =DATE(A$1,B$1,1) を入力した後で、 式 =WORKDAY.INTL(A5,1,"0000011") を入力したセル A6 を下方にズズーッとオートフィル ただし、セル A5 以下の書式は、 d(ddd) としておく。

hooue100
質問者

お礼

言われる通りにやってみたのですが 以下のリンクのように、土曜日曜の網掛けがなくなってしまい 土曜と日曜がスキップされてしまいました もしかして 入力させない=入力の項目も出さない という意味でお教えいただきましたでしょうか? ちがうんです 毎日日付は出しますが、日曜日の◯や✕を入力できないようにする またはハイフン固定にしたかったのです https://drive.google.com/file/d/16AbR_uqOsCsW2m0I1qbqrDjXNy8U876q/view?usp=sharing

hooue100
質問者

補足

"0000001" ですね? これで日曜日をスキップできる? 入力せないとかとなれば、思いっきりコーディングしないと無理っぽいです

その他の回答 (4)

回答No.5

リストが、表示されなくてもいいのなら 入力規則で  入力値の種類:ユーザー設定 数式:=AND(WEEKDAY($A5,2) <> 7, OR(B5 = "ー", B5 = "◯", B5 = "×")) エラーメッセージタブで スタイル:停止  タイトル:日曜日は入力できません。 マクロを使うのなら、 入力規則は、 入力値の種類:リスト 元の値:ー, ◯, × Private Sub Worksheet_Change(ByVal Target As Range) Dim ValidValues As String Dim Cell As Range Dim IntersectRange As Range Dim SelectedValue As Variant ValidValues = "ー, ◯, ×" Set IntersectRange = Intersect(Target, Me.Range("B5:AO35")) If IntersectRange Is Nothing Then Exit Sub On Error Resume Next Application.EnableEvents = False For Each Cell In IntersectRange If Weekday(Me.Cells(Cell.Row, 1), 2) = 7 Then ' 日曜日の場合 Cell.Value = "" MsgBox "日曜日には入力が許可されていません。", vbExclamation Else SelectedValue = Cell.Value If InStr(1, ValidValues, SelectedValue) = 0 Then Cell.Value = "" MsgBox "有効な値を入力してください。", vbExclamation End If End If Next Cell Application.EnableEvents = True End Sub マクロを使う場合、あるいは、ユーザー定義で、日曜はだめよを、定義した場合、入力規則を使わないで、欄外に例えば B38:AO38 に ◯ B39:AO39 に × B40:AO40 に ー を、ズラッと入力しておくと、右クリックの”ドロップダウンリストから選択”が使えます。 これは、ショートカットキー ALT+↓ なので、 入力の際、マウスを触ることなく、TABキー ALT+↓ ↓ で、入力することができます。

hooue100
質問者

お礼

ありがとうございます リストは生かしたままとしたいです 結局、日曜日をスキップさせて表示しないようにさせる方法で 対応します

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

マクロを使ってもよろしければ、強引に「-」にしてしまう方法があります。 該当のシートタブを右クリックして「コードの表示」で出た画面の右側に以下をコピペするとA列に(日)が含まれた行でセルを選択したりデータを入力したりしてもすべて「-」に変えてしまいます。 AU1は右端(503の夕)の1行目のセル番地を記載してください。 B列から上記の列までが対象となります。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Column < Range("B1").Column Or Target.Column > Range("AU1").Column Then Exit Sub End If If InStr(Cells(Target.Row, "A").Text, "(日)") > 0 Then Target.Value = "-" End If Application.EnableEvents = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False If Target.Column < Range("B1").Column Or Target.Column > Range("AU1").Column Then Exit Sub End If If InStr(Cells(Target.Row, "A").Text, "(日)") > 0 Then Target.Value = "-" End If Application.EnableEvents = True End Sub

hooue100
質問者

お礼

詳細をありがとうございます!!! 試してみましたが、B1=>B7、AU1=>AO7 に置き換えて、上書き保存しましたが 動作しなかったです 日曜日はスキップさせる方法で対応しようと思います ありがとうございました

hooue100
質問者

補足

エクセルシートのリンクを張り忘れていました https://drive.google.com/file/d/14mg4WkrjIjiJUNS_EO5rq6XKe_O3HGwx/view?usp=sharing

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.2

添付図参照(Excel 2019)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄↓↓↓↓↓↓↓↓↓↓↓↓↓

hooue100
質問者

お礼

WORKDAY.INTL(A5,1,11)で対応できました

  • webuser
  • ベストアンサー率33% (372/1120)
回答No.1

日曜日のリストを-だけにすればいいのでは?