-1

我有一个表(2003 和 2007),其中有两列FromDateToDate类型为 DateTime,格式为 mm/dd/yyyy。

excel表格中可以有“n”条记录。

我想应用验证,这样当保存文件时,列的ToDate值应该总是大于等于列的值。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下拉列表更改为,DateData字段更改为greater than or equal to并输入字段.=A2Start Date

在此处输入图像描述

现在在 column 中输入一些值B,包括那些不“正确”的值(这包括任何非日期 [在我的情况下由单元格格式定义的日期mm/dd/yyyy] 以及之前的一个ToDate)。您将收到一条错误消息(您也可以根据需要进行调整)。如果您确实需要/更喜欢使用 VBA,很高兴修改答案。

在此处输入图像描述

于 2012-08-21T02:55:59.893 回答