我有一个excel表(2003 和 2007),其中有两列FromDate
,ToDate
类型为 DateTime,格式为 mm/dd/yyyy。
excel表格中可以有“n”条记录。
我想应用验证,这样当保存文件时,列的ToDate
值应该总是大于等于列的值。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
现在在 column 中输入一些值B
,包括那些不“正确”的值(这包括任何非日期 [在我的情况下由单元格格式定义的日期mm/dd/yyyy
] 以及之前的一个ToDate
)。您将收到一条错误消息(您也可以根据需要进行调整)。如果您确实需要/更喜欢使用 VBA,很高兴修改答案。