ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Change date with KeyDown (https://www.excelbanter.com/excel-programming/345099-change-date-keydown.html)

John Pierce

Change date with KeyDown
 
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.


Tom Ogilvy

Change date with KeyDown
 
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

--
Regards,
Tom Ogilvy


"John Pierce" wrote in message
oups.com...
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.





All times are GMT +1. The time now is 07:05 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com