Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

VB6 - Convert HH:MM into Decimal

Posted on 2016-11-18
Medium Priority
119 Views
Hi,

I need your help to convert a time in a textbox1 to be converted into Decimal value.

Normally, in Excel, if i have 00:10 (10 minutes) the decimal value would be 0.17.
The excel formula would be:
``````=INT(A1)*24+ROUND(MINUTE(A1)/60,2)
``````

But now, i would like to do the same thing but in VB6 and the time would be entered in the TextBox1.

I would like to get the Decimal result in Textbox2.

How can i do that?

0
Question by:Wilder1626
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4
• 3

LVL 49

Expert Comment

ID: 41893438
Will the TextBox1 value always be hours and minutes?
0

LVL 49

Accepted Solution

Martin Liss earned 1600 total points
ID: 41893444
Change the textbox names to suit.

``````Dim intMin As Integer
Dim strParts() As String
strParts = Split(Text1.Text, ":")
intMin = strParts(1) + 60 * strParts(0)
Text2.Text = Round(intMin / 60, 2)
``````
0

LVL 5

Assisted Solution

Chris Watson earned 400 total points
ID: 41893447
``````Dim hours As Long
hours = Left(Text1.Text, 2)

Dim hoursAsDays As Long
hoursAsDays = hours * 24

Dim minutes As Byte
minutes = Right(Text1.Text, 2)

Dim minutesAsDays As Currency
minutesAsDays = minutes / 60
minutesAsDays = Round(minutesAsDays, 2)

Dim days As Currency
days = hoursAsDays + minutesAsDays

Text2.Text = days
``````
0

LVL 11

Author Closing Comment

ID: 41893457
Thank you so much. This is exactly what i was looking for.
0

LVL 49

Expert Comment

ID: 41893464
I don't know how the value gets into Textbox1 but if it's user entered then you might want to add lines 3 to 6.
``````Dim intMin As Integer
Dim strParts() As String
If Len(Text1.Text) - 1 <> Len(Replace(Text1.Text, ":", "")) Then
MsgBox "A string in the form hh:mm or h:mm is expected, please try again"
Exit Sub
End If

strParts = Split(Text1.Text, ":")
intMin = strParts(1) + 60 * strParts(0)
Text2.Text = Round(intMin / 60, 2)
``````
In any case you're welcome and I'm glad I was able to help.

If you expand the â€śFull Biographyâ€ť section of my profile you'll find links to some articles I've written that may interest you.

Marty - Microsoft MVP 2009 to 2016
Experts Exchange MVE 2015
Experts Exchange Top Expert Visual Basic Classic 2012 to 2015
1

LVL 11

Author Comment

ID: 41893808
Thanks Martin, I will definitely add lines 3 to 6. Good idea as the vale is added manually.
0

LVL 49

Expert Comment

ID: 41893819
Since a user can put anything in a textbox you probably should use a MaskedEdit control instead as in the attached.
1

LVL 11

Author Comment

ID: 41894164
wow, i've to go with your MaskedEdit control. That a very good idea. Thanks again
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code oâ€¦
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applicâ€¦
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can launâ€¦
Suggested Courses
Course of the Month4 days, 8 hours left to enroll