Change date with KeyDown

J

John Pierce

The following code changes a date in a form text box like this:
txtDate.Text = Format(Date, "mm/dd")
with left and right arrows.
Private Sub txtDate_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal Shift As Integer)
Dim sDate As String
Dim v As Integer, dte As Date
Select Case KeyCode
Case 37 ' Left
v = -1
Case 39 ' Right
v = 1
Case Else
v = 0
End Select
sDate = txtDate.Text
If InStr(sDate, ",") Then
sDate = Trim(Right(sDate, Len(sDate) - InStr(sDate, ",")))
End If
If IsDate(sDate) And v <> 0 Then
dte = CDate(sDate)
dte = dte + v
txtDate = Format(dte, "mm/dd")
End If
End Sub

Can this be adapted to change a Time value formatted thus: txtTime.text
= Format(Now(), "h:mm AM/PM") by 15 minute increments.
 
T

Tom Ogilvy

This worked for me:

Private Sub txtDate_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal Shift As Integer)
Dim sDate As String
Dim v As Integer, dte As Date
Select Case KeyCode
Case 37 ' Left
v = -1
Case 39 ' Right
v = 1
Case Else
v = 0
End Select
sDate = txtDate.Text
If InStr(sDate, ",") Then
sDate = Trim(Right(sDate, Len(sDate) - InStr(sDate, ",")))
End If
If IsDate(sDate) And v <> 0 Then
dte = CDate(sDate)
dte = dte + v*TimeValue("00:15")
txtDate = Format(dte, "hh:mm")
End If
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top