ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Worksheet_Change: Date Time Input [mmddyy hhmm] to [mm/dd/yy hh:mm] (https://www.excelbanter.com/excel-programming/349204-worksheet_change-date-time-input-%5Bmmddyy-hhmm%5D-%5Bmm-dd-yy-hh-mm%5D.html)

Brian Handly

Worksheet_Change: Date Time Input [mmddyy hhmm] to [mm/dd/yy hh:mm]
 
WinXP SP2, Excel XP

I found Chip Pearson's Date Time help:
(http://www.cpearson.com/excel/DateTimeEntry.htm)

However, his Worksheet_Charge example VBA Subroutines are either for
Dates or Times.

I need to handle Date + Time in the same field.

I have tried to combine Chip's two example Subroutines into one, but
have not managed to make a single Subroutine that will handle inputs
like "MMDDYY HHMM" [preferred input]

I have not been able to figure out why Chip's Datevalue Sub uses
".Formula" and the TimeValue Sub uses ".Value" when extracting the user
input.

Suggestions?

Texas Handly

Leith Ross[_445_]

Worksheet_Change: Date Time Input [mmddyy hhmm] to [mm/dd/yy hh:mm]
 

Hello Brian,

The easiest method is to create a custom cell format and apply that
format to the cells on the worksheet.

1. Click FORMAT or use ALT + O
2. Click Cells... or press E
3. If the NUMBER tab isn't selected, click it
4. Find CUSTOM in the Category list.
5. Click on the TYPE box or use ALT + T
6. Enter your format as *mm/dd/yyyy hh:mm*
7. Press ENTER or click OK to close the dialog.

Go back to the worksheet and select the cells you want to format and
then repeat steps 1 through 4 to assign your custom format to the
cells.

Sincerely,
Leith Ross


--
Leith Ross
------------------------------------------------------------------------
Leith Ross's Profile: http://www.excelforum.com/member.php...o&userid=18465
View this thread: http://www.excelforum.com/showthread...hreadid=496992


Brian Handly

Worksheet_Change: Date Time Input [mmddyy hhmm] to [mm/dd/yy
 
Leith Ross wrote:
Hello Brian,

The easiest method is to create a custom cell format and apply that
format to the cells on the worksheet.

1. Click FORMAT or use ALT + O
2. Click Cells... or press E
3. If the NUMBER tab isn't selected, click it
4. Find CUSTOM in the Category list.
5. Click on the TYPE box or use ALT + T
6. Enter your format as *mm/dd/yyyy hh:mm*
7. Press ENTER or click OK to close the dialog.

Go back to the worksheet and select the cells you want to format and
then repeat steps 1 through 4 to assign your custom format to the
cells.

Sincerely,
Leith Ross


Leith

This would work if EXCEL recognize my input as a date/time.
Unfortunately, EXCEL sees "mmddyy hhmm" as a text field and does not use
your suggested field.

I am looking for a variation of Chip Pearson's subroutines that will
convert my input data ["mmddyy hhmm"] to "mm/dd/yy hh:mm" so that EXCEL
will recognize the data as Date/Time.

Texas Handly

Dave Peterson

Worksheet_Change: Date Time Input [mmddyy hhmm] to [mm/dd/yy hh:mm]
 
How about this:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

'MMDDYY HHMM
Dim myRng As Range
Dim myCell As Range
Dim myMonth As Long
Dim myDay As Long
Dim myYear As Long
Dim myHour As Long
Dim myMin As Long

Set myRng = Me.Range("a1:A999")

If Intersect(myRng, Target) Is Nothing Then
Exit Sub
End If

For Each myCell In Intersect(myRng, Target).Cells
With myCell
If .Value Like "###### ####" Then
'keep going
myMonth = Mid(.Value, 1, 2)
myDay = Mid(.Value, 3, 2)
myYear = Mid(.Value, 5, 2)
If myYear < 31 Then
myYear = myYear + 2000
Else
myYear = myYear + 1900
End If
myHour = Mid(.Value, 8, 2)
myMin = Mid(.Value, 10, 2)

If Format(DateSerial(myYear, myMonth, myDay) _
+ TimeSerial(myHour, myMin, 0), "mmddyy hhmm") _
= .Value Then
'it's ok
Application.EnableEvents = False
.Value = DateSerial(myYear, myMonth, myDay) _
+ TimeSerial(myHour, myMin, 0)
.NumberFormat = "mmddyy hhmm"
Application.EnableEvents = True
End If
End If
End With
Next myCell

End Sub

=======
And for the .formula vs .value in Chip's code. I'd just say he wrote each
procedure at different times.

Since he does this:

If .HasFormula = False Then

He knows that the .value and .formula return the exact same thing.

Brian Handly wrote:

WinXP SP2, Excel XP

I found Chip Pearson's Date Time help:
(http://www.cpearson.com/excel/DateTimeEntry.htm)

However, his Worksheet_Charge example VBA Subroutines are either for
Dates or Times.

I need to handle Date + Time in the same field.

I have tried to combine Chip's two example Subroutines into one, but
have not managed to make a single Subroutine that will handle inputs
like "MMDDYY HHMM" [preferred input]

I have not been able to figure out why Chip's Datevalue Sub uses
".Formula" and the TimeValue Sub uses ".Value" when extracting the user
input.

Suggestions?

Texas Handly


--

Dave Peterson

Brian Handly

Worksheet_Change: Date Time Input [mmddyy hhmm] to [mm/dd/yy
 
Dave Peterson wrote:
How about this:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

'MMDDYY HHMM
Dim myRng As Range
Dim myCell As Range
Dim myMonth As Long
Dim myDay As Long
Dim myYear As Long
Dim myHour As Long
Dim myMin As Long

Set myRng = Me.Range("a1:A999")

If Intersect(myRng, Target) Is Nothing Then
Exit Sub
End If

For Each myCell In Intersect(myRng, Target).Cells
With myCell
If .Value Like "###### ####" Then
'keep going
myMonth = Mid(.Value, 1, 2)
myDay = Mid(.Value, 3, 2)
myYear = Mid(.Value, 5, 2)
If myYear < 31 Then
myYear = myYear + 2000
Else
myYear = myYear + 1900
End If
myHour = Mid(.Value, 8, 2)
myMin = Mid(.Value, 10, 2)

If Format(DateSerial(myYear, myMonth, myDay) _
+ TimeSerial(myHour, myMin, 0), "mmddyy hhmm") _
= .Value Then
'it's ok
Application.EnableEvents = False
.Value = DateSerial(myYear, myMonth, myDay) _
+ TimeSerial(myHour, myMin, 0)
.NumberFormat = "mmddyy hhmm"
Application.EnableEvents = True
End If
End If
End With
Next myCell

End Sub

=======
And for the .formula vs .value in Chip's code. I'd just say he wrote each
procedure at different times.

Since he does this:

If .HasFormula = False Then

He knows that the .value and .formula return the exact same thing.

Brian Handly wrote:
WinXP SP2, Excel XP

I found Chip Pearson's Date Time help:
(http://www.cpearson.com/excel/DateTimeEntry.htm)

However, his Worksheet_Charge example VBA Subroutines are either for
Dates or Times.

I need to handle Date + Time in the same field.

I have tried to combine Chip's two example Subroutines into one, but
have not managed to make a single Subroutine that will handle inputs
like "MMDDYY HHMM" [preferred input]

I have not been able to figure out why Chip's Datevalue Sub uses
".Formula" and the TimeValue Sub uses ".Value" when extracting the user
input.

Suggestions?

Texas Handly


Dave

Thanks, Especially for your response on .Formula vs .Value

I will try the Subroutine.

Texas Handly


All times are GMT +1. The time now is 03:08 PM.

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