• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 207
  • Last Modified:

VB6 - Convert HH:MM into Decimal

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)

Open in new window


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?

Thanks for your help
0
Wilder1626
Asked:
Wilder1626
  • 4
  • 3
2 Solutions
 
Martin LissOlder than dirtCommented:
Will the TextBox1 value always be hours and minutes?
0
 
Martin LissOlder than dirtCommented:
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)

Open in new window

0
 
Chris WatsonSoftware DeveloperCommented:
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

Open in new window

0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
Wilder1626Author Commented:
Thank you so much. This is exactly what i was looking for.
0
 
Martin LissOlder than dirtCommented:
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)

Open in new window

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
 
Wilder1626Author Commented:
Thanks Martin, I will definitely add lines 3 to 6. Good idea as the vale is added manually.
0
 
Martin LissOlder than dirtCommented:
Since a user can put anything in a textbox you probably should use a MaskedEdit control instead as in the attached.
MaskedEdit.zip
1
 
Wilder1626Author Commented:
wow, i've to go with your MaskedEdit control. That a very good idea. Thanks again
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now