我有一个带有相关日期时间列的日期字段,我希望能够输入相对日期字符串,例如“m + 1”,以便输入从今天起一个月的日期。是否有一个事件可以挂钩到我可以编写VBA代码的地方,该代码将解释并将字段值更改为验证将理解的实际日期,然后再将其发送到验证?
我似乎无法找到这样的事件,即使BeforeUpdate
太火了。在"The value you entered isn't valid for this field."
触发之前,我收到了BeforeUpdate
错误消息。
您可以使用控件的按键事件。并且要吹灭(从访问控制中取消按键没有看到密钥,然后设置keycode = 0。
因此,该例程将允许用户点击Y或y =加上或减去一年D或d =加或减一天M或m - 加或减一个月。
请注意,您必须使用shift键 - 将忽略大写锁定。
Private Sub IvDate_KeyDown(KeyCode As Integer, Shift As Integer)
Dim strMyKeys As String
strMyKeys = "mdy" ' key check ignores caps
If InStr(strMyKeys, Chr(KeyCode)) > 0 Then
If IsNull(Me.IvDate) Then Me.IvDate = Date
Select Case KeyCode
Case Asc("M") And (Shift = 1)
' Move ahead one month
Me.IvDate = DateAdd("m", 1, Me.IvDate)
Case Asc("M")
' move bck one month
Me.IvDate = DateAdd("m", -1, Me.IvDate)
Case Asc("D") And (Shift = 1)
Me.IvDate = DateAdd("d", 1, Me.IvDate)
Case Asc("D")
Me.IvDate = DateAdd("d", -1, Me.IvDate)
Case Asc("Y") And (Shift = 1)
Me.IvDate = DateAdd("yyyy", 1, Me.IvDate)
Case Asc("Y")
Me.IvDate = DateAdd("yyyy", -1, Me.IvDate)
End Select
KeyCode = 0 ' sends current key to black hole
End If
End Sub