私はExcelシート(2003年と2007年)を持っています。このシートには、mm / dd/yyyy形式のDateTimeタイプの2つの列がFromDate
あります。ToDate
Excelシートには「n」個のレコードが含まれる場合があります。
ファイルを保存するときに、columnのToDate
値が常にcolumnの値よりも大きくなるように検証を適用したいと思います。FromDate
そうでない場合は、エラーメッセージが表示されます。
編集: @brettdjは素晴らしいポイントを作りました-これはすでに存在している場合があります。もしそうなら、以下は各エラー(たくさんあると非常に迷惑になるでしょう)とそれを含むメッセージを表示しますdebug.print
。ここでの私の設定は、以下のスクリーンショットと同じであることに注意してください。これはThisWorkbook
VBAエディターで実行する必要があり、コードはBeforeSave
イベントにドロップされます(これは単にエラーを表示し、保存プロンプトに進みます)。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FromDate As Range
' Note that this assumes that the ToDate column has all values
' filled out. Otherwise it will stop short.
Set FromDate = Range("B2:B" & Range("A2").End(xlDown).Row)
' Iterate each cell, checking the value next to it and showing
' an error if the ToDate is > FromDate (ignore blank FromDates)
ErrorCount = 0
For Each Cell In FromDate
If Cell.Value < Cell.Offset(0, -1) And Cell.Value <> "" Then
' Handle your error however you want - this just prints
MsgBox "Error in row " & Cell.Row
Debug.Print Cell.Row
ErrorCount = ErrorCount + 1
End If
Next Cell
' If we found any errors, cancel the save event
If ErrorCount > 0 Then
Cancel = True
End If
End Sub
データを入力する場合...
VBAを使用するために必要ですか?データ検証を使用してVBAなしでこれを行うことができるので、私は尋ねます:
1.)データを設定し、ToDate
列を選択して(列ヘッダーを含めないでください)Data->Data Validation
、リボンをクリックし(Excel 2007を使用しています)、Allow
ドロップダウンをDate
に変更し、Data
フィールドをに変更して、フィールドにgreater than or equal to
入力=A2
しStart Date
ます。
次に、列B
にいくつかの値を入力します。これには、「正しくない」値も含まれます(これには、日付以外の値[私の場合はセル形式で定義された日付mm/dd/yyyy
]と、の前の値が含まれますToDate
)。エラーメッセージが表示されます(必要に応じて調整することもできます)。実際にVBAを使用する必要がある/使用したい場合は、回答を変更してください。