-1

私はシート(2003年と2007年)を持っています。このシートには、mm / dd/yyyy形式のDateTimeタイプの2つの列がFromDateあります。ToDate

Excelシートには「n」個のレコードが含まれる場合があります。

ファイルを保存するときに、columnのToDate値が常にcolumnの値よりも大きくなるように検証を適用したいと思います。FromDateそうでない場合は、エラーメッセージが表示されます。

4

1 に答える 1

1

編集: @brettdjは素晴らしいポイントを作りました-これはすでに存在している場合があります。もしそうなら、以下は各エラー(たくさんあると非常に迷惑になるでしょう)とそれを含むメッセージを表示しますdebug.print。ここでの私の設定は、以下のスクリーンショットと同じであることに注意してください。これはThisWorkbookVBAエディターで実行する必要があり、コードは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入力=A2Start Dateます。

ここに画像の説明を入力してください

次に、列Bにいくつかの値を入力します。これには、「正しくない」値も含まれます(これには、日付以外の値[私の場合はセル形式で定義された日付mm/dd/yyyy]と、の前の値が含まれますToDate)。エラーメッセージが表示されます(必要に応じて調整することもできます)。実際にVBAを使用する必要がある/使用したい場合は、回答を変更してください。

ここに画像の説明を入力してください

于 2012-08-21T02:55:59.893 に答える