- 締切済み
VB.net 登録されている日付の連続性のチェック
VB.netについて質問です。 下記のようにデータがあったとします。 _________ 日付、コード 1/1、****** 1/1、****** 1/2、****** 1/2、****** 1/2、****** 1/4、****** 1/4、****** 1/7、****** 1/11、****** ・ ・ ・ _______ 登録されていない日付があったときにメッセージを出したいです。 下記のコーディングでは 1/4~1/7の間で(2日連続登録されていない) 1/5、1/6は登録されていません。まで出すのが精一杯です。 ______________________________ '登録されていない日があったときメッセージを出す For i = 0 To DataGridView.RowCount - 2 Dim kyou As Date = DataGridView.Rows(i).Cells(0).Value Dim tsugi As Date = DataGridView.Rows(i + 1).Cells(0).Value Dim ashita As Date = kyou.AddDays(1) Dim asatte As Date = ashita.AddDays(1) Dim shiasatte As Date = asatte.AddDays(1) '2日連続登録データが抜けていたときまでのチェック If kyou = tsugi Or tsugi = ashita Then Else If tsugi = asatte Then MsgBox(ashita & "が未登録です") Else If tsugi = shiasatte Then MsgBox(ashita & "と" & asatte & "が未登録です") End If End If End If Next ______________________________ どんなに日にち離れていても対応できるようなコーディングを教えて欲しいです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- HohoPapa
- ベストアンサー率65% (455/693)
>できなかったです~>< ありゃ。私がポカしてそうです。 Dim i As Long Dim AdCnt As Long For i = 0 To DataGridView.RowCount - 2 AdCnt = 0 Do AdCnt = AdCnt + 1 If DataGridView.Rows(i).Cells(0).Value + AdCnt < _ DataGridView.Rows(i + 1).Cells(0).Value Then MsgBox Format(DataGridView.Rows(i).Cells(0).Value + AdCnt, "YYYY/MM/DD") & _ "が未登録です" Else Exit Do End If Loop Next これでもNGなら、どのようにアカンか、説明してみてください。
- ToOrisugaru
- ベストアンサー率28% (80/280)
これって、1カ月の中に、必ず日は存在するのでしょうか?つまり無い月は存在しないのでしょうか? あと年の情報はどのような範囲になるのでしょうか?掲載されている日付は、月/日のみであり、年が不明です。いつの年月なのか解らないと判定ができないと思います。たとえば、同じ月でも閏年も考慮しなければならないですね?また、指定されている日付は1カ月分なのでしょうか?それとも、1年分で抜けている日を得たいのでしょうか?
- HohoPapa
- ベストアンサー率65% (455/693)
こんな感じでしょうか。 (手元に環境がないので未確認です。) (文法チェックすら行っていません) Dim i As Long Dim AdCnt As Long For i = 0 To DataGridView.RowCount - 2 AdCnt = 0 Do AdCnt = AdCnt + 1 If DataGridView.Rows(i).Cells(0).Value + AdCnt <> _ DataGridView.Rows(i + 1).Cells(0).Value Then MsgBox Format(DataGridView.Rows(i).Cells(0).Value + AdCnt, "YYYY/MM/DD") & _ "が未登録です" Else Exit Do End If Loop Next
お礼
できなかったです~><