Solved

VB6 - Convert HH:MM into Decimal

Posted on 2016-11-18
8
62 Views
Last Modified: 2016-11-19
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
Comment
Question by:Wilder1626
  • 4
  • 3
8 Comments
 
LVL 46

Expert Comment

by:Martin Liss
ID: 41893438
Will the TextBox1 value always be hours and minutes?
0
 
LVL 46

Accepted Solution

by:
Martin Liss earned 400 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)

Open in new window

0
 
LVL 4

Assisted Solution

by:Chris Watson
Chris Watson earned 100 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

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.

 
LVL 11

Author Closing Comment

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

Expert Comment

by:Martin Liss
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)

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
 
LVL 11

Author Comment

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

Expert Comment

by:Martin Liss
ID: 41893819
Since a user can put anything in a textbox you probably should use a MaskedEdit control instead as in the attached.
MaskedEdit.zip
1
 
LVL 11

Author Comment

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

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
VB 6.0 printer how to align 6 67
Windows 10 start screen issues 9 55
using web browser with BING 40 132
Problem to line 23 54
There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and forth, and/or are slow. Here is an easy way in VB6 using ADO to remove duplicate row…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
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…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question