ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VB coding for formatting time used in calculations (https://www.excelbanter.com/excel-programming/289644-vbulletin-coding-formatting-time-used-calculations.html)

Tat[_2_]

VB coding for formatting time used in calculations
 
I am a novice at VB coding so this is probably an
elementary question.

I would like to format a range in [h]:mm: format so that I
can use it in a calculation. Right now I can use the
spreadsheet format but in order to 'activate' the format I
have to doubleclick EACH cell and then move to another
cell. There are 200 lines of data that needs to be
formatted and 'activated' so I thought a VB routine would
be more efficient.

This is what I have come up with. I have no trouble with
formatting it, it's the coding for the 'doubliclick'that I
am having problem with. Coding example:

Sub DirectTimetoCalculateTimeFormat()
'
Columns("D:D").Select
Selection.NumberFormat = "[h]:mm:"
End Sub

Sub DoubleClicks()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("d8:e300")
For Each c In myrange.cells
Application.DoubleClick
Application.MoveAfterReturn = TRUE
Application.MoveAfterReturnDirection = xlDown
Next
End Sub

From what I have read the 'For Each..Next' loop is a good
statement to use or is there another way of coding this
altogether?

I would like to use the same procedure for different
spreadsheets so I have saved it in personal.xls. Do I have
to define the spreadsheet in the procedure or is it
assumed when I open the Macro (saved in personal.xls)in the
current spreadsheet?


Jake Marx[_3_]

VB coding for formatting time used in calculations
 
Hi Tat,

Typically, when a value is not "recognized" until you double-click, that
means Excel has not evaluated the entry as a number yet. Times/dates are
stored as numbers in Excel. To force Excel to reevaluate the cells without
having to double-click each one, you can do this:

1) enter 0 in an empty cell
2) copy that cell
3) select the range to reevaluate
4) paste special paste=values and operation=add

That will, in effect, add 0 to each cell in the range, which will force
Excel to recognize the date/times. You could record a macro while doing
this if you need a programmatic solution.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


Tat wrote:
I am a novice at VB coding so this is probably an
elementary question.

I would like to format a range in [h]:mm: format so that I
can use it in a calculation. Right now I can use the
spreadsheet format but in order to 'activate' the format I
have to doubleclick EACH cell and then move to another
cell. There are 200 lines of data that needs to be
formatted and 'activated' so I thought a VB routine would
be more efficient.

This is what I have come up with. I have no trouble with
formatting it, it's the coding for the 'doubliclick'that I
am having problem with. Coding example:

Sub DirectTimetoCalculateTimeFormat()
'
Columns("D:D").Select
Selection.NumberFormat = "[h]:mm:"
End Sub

Sub DoubleClicks()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("d8:e300")
For Each c In myrange.cells
Application.DoubleClick
Application.MoveAfterReturn = TRUE
Application.MoveAfterReturnDirection = xlDown
Next
End Sub

From what I have read the 'For Each..Next' loop is a good
statement to use or is there another way of coding this
altogether?

I would like to use the same procedure for different
spreadsheets so I have saved it in personal.xls. Do I have
to define the spreadsheet in the procedure or is it
assumed when I open the Macro (saved in personal.xls)in the
current spreadsheet?



No Name

VB coding for formatting time used in calculations
 
Thank you, thankyou, thankyou! It works wonderfully!
-----Original Message-----
Hi Tat,

Typically, when a value is not "recognized" until you

double-click, that
means Excel has not evaluated the entry as a number yet.

Times/dates are
stored as numbers in Excel. To force Excel to reevaluate

the cells without
having to double-click each one, you can do this:

1) enter 0 in an empty cell
2) copy that cell
3) select the range to reevaluate
4) paste special paste=values and operation=add

That will, in effect, add 0 to each cell in the range,

which will force
Excel to recognize the date/times. You could record a

macro while doing
this if you need a programmatic solution.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address

unmonitored]


Tat wrote:
I am a novice at VB coding so this is probably an
elementary question.

I would like to format a range in [h]:mm: format so

that I
can use it in a calculation. Right now I can use the
spreadsheet format but in order to 'activate' the

format I
have to doubleclick EACH cell and then move to another
cell. There are 200 lines of data that needs to be
formatted and 'activated' so I thought a VB routine

would
be more efficient.

This is what I have come up with. I have no trouble with
formatting it, it's the coding for

the 'doubliclick'that I
am having problem with. Coding example:

Sub DirectTimetoCalculateTimeFormat()
'
Columns("D:D").Select
Selection.NumberFormat = "[h]:mm:"
End Sub

Sub DoubleClicks()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("d8:e300")
For Each c In myrange.cells
Application.DoubleClick
Application.MoveAfterReturn = TRUE
Application.MoveAfterReturnDirection = xlDown
Next
End Sub

From what I have read the 'For Each..Next' loop is a

good
statement to use or is there another way of coding this
altogether?

I would like to use the same procedure for different
spreadsheets so I have saved it in personal.xls. Do I

have
to define the spreadsheet in the procedure or is it
assumed when I open the Macro (saved in personal.xls)in

the
current spreadsheet?


.



All times are GMT +1. The time now is 09:02 PM.

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