View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
OssieMac OssieMac is offline
external usenet poster
 
Posts: 2,510
Default Excel VBA vs Time fields

Hi again,

I completely forgot earlier to include that CDate also handles converting
time. I copied the example from my multitude of examples and only realized
that I had not added the time bit when I read Joel's answer.

CDate can convert times entered as strings if they are in the correct format
with the colon and the string contains hours. If entered as minutes and
seconds only then you need to concatenate the hours and the entered string
before applying CDate.

Examples:-

strTime = "59:11" 'As entered by user in text box.

strTime = "0:" & strTime 'Concatenate hrs with the mins and secs entered

dateValue = CDate(strTime) 'convert to date that can be manipulated with
maths

Range("A1") = dateValue

The above would display as 12:59:11 AM in cell A1. However, if you use
number format and create a custom format as mm:ss then it will display as
minutes and seconds only.

Also note that if you are manipulating times on a worksheet and the minutes
exceed 59 minutes, using a custom format with square brackets around the mm
you can force it to continue displaying in mins and secs.
Example:- [mm]:ss
You can do the same with hours to prevent it thinking it is the next day if
they go past 24 hours. [hh]:mm:ss.

However, CDate in VBA cannot handle the seconds or minutes if they exceed 59
and cannot handle hours exceeding 24.

--
Regards,

OssieMac


"Cavalierfool" wrote:

Hey all, sort of teaching myself excel and vba to simplify some work, done a
lot of reading but I'm not getting the hang of one aspect.

I need to have two time fields in my form, in which the user will enter a
value of minutes and seconds, in the format of mm:ss, have it stored in a
cell pointed to by other factors (arbitrarily use A1 and B1 for example
purposes) with the ability to be mathematically manipulated by fields filled
with integer values (A2, B2, C1) with results stored in field (D1 such that

D1 = ((A1 * A2) + (B1 * B2))/C1

I think the core problem I'm having is getting the Data entered into the
TextBox to translate as not a string, and am a little lost, I believe the
math will work fine whats it's actually a time in excel's view, so it's
really the VBA code side of things I need.

Thanks for any advice.