質問: ### 前提・実現したいこと excelで選択された曜日があるかどうかチェックしたいのですが、やり方がわかりません。 調べても出てこないのでお知恵をお貸しください。 下のようなものをエクセルで作成しており、 開始日~終了日の期間中の 〇曜日の〇時~〇曜日の〇時まで知らせる、というシステムを作っているのですが、 その開始日~終了日に存在しない曜日が選ばれたとき、 その曜日は期間中に無いよという感じのエラーを表示させるということをしたいのですが やり方がわかりません。 どのようなコードを書けば判定してもらえるのでしょうか。 よろしくお願いいたします。 『〇〇』などはプルダウンで数字を選択できるようにしており、 曜日の横の『□』もプルダウンで、選ばれたとき『■』になるようになっております。 | 開始日 | 〇〇〇〇 | 年 | 〇〇 | 月 | 〇〇 | 日 | 〇曜日 | 〇〇 | 時 | 〇〇 | 分 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 終了日 | 〇〇〇〇 | 年 | 〇〇 | 月 | 〇〇 | 日 | 〇曜日 | 〇〇 | 時 | 〇〇 | 分 | | : | | | | | | | | | | | | | 開始 | □日 | □月 | □火 | □水 | □木 | □金 | □土 | 〇〇 | 時 | 〇〇 | 分 | | 終了 | □日 | □月 | □火 | □水 | □木 | □金 | □土 | 〇〇 | 時 | 〇〇 | 分 |
回答: ``` Dim Sunday Sunday = "日曜日" If Range("K23").Value = "■" Then '日曜日がチェックされたら SyuDate1 = Format(Range("I19"), "00") & "/" & Format(Range("K19"), "00") & "/" & Format(Range("F19"), "0000") '開始日 SyuDate2 = Format(Range("I21"), "00") & "/" & Format(Range("K21"), "00") & "/" & Format(Range("F21"), "0000") '終了日 Nod = DateDiff("d", SyuDate1, SyuDate2) '日数差抜き出し For l = 0 To Nod Datead = Dateadd("d", l, SyuDate1) Week = WeekdayName(Weekday(Datead)) If Sunday = Week Then Exit For Next l If Sunday = Week Then Dim SyuTime Dim StrTime Dim EndTime SyuTime = Format(Range("V25"), "00") & Format(Range("X25"), "00") StrTime = Format(Range("P19"), "00") & Format(Range("R19"), "00") EndTime = Format(Range("P21"), "00") & Format(Range("R21"), "00") If Range("M19").Value = "(日)" And Range("M21").Value = "(日)" And Range("X25").Value <> "" Then ElseIf Range("M19").Value = "(日)" And Range("X25").Value <> "" Then If SyuTime < StrTime Then MsgBox ("静観期間外です") Range("V25,X25").ClearContents End If ElseIf Range("M21").Value = "(日)" And Range("X25").Value <> "" Then If SyuTime > EndTime Then MsgBox ("期間外です") Range("V25,X25").ClearContents End If End If Else MsgBox ("期間内に存在しない曜日です") Range("K23").Value = "□" End If End If ``` ループで繰り返して1つ1つ見せていけばできました。 ありがとうございました。