ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   round number for unknown num_digits (https://www.excelbanter.com/excel-programming/372738-round-number-unknown-num_digits.html)

Michael Malinsky

round number for unknown num_digits
 
I want to have a control on a UserForm (scollbar, slider, other
suggestions) in which the user can select the number of decimal places
(1 through 9) or significant digits (-1 through -9) for a range of
cells. The siginficant digits is easy:

ActiveCell.Value =
Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value), _
"#,##0")

I'm having trouble coming up with a way to do the decimal places
portion of this code. The only solution I can come up with is to use a
Select...Case for each value 1 through 9 and have the appropriate
formatting under each, which seems like the lengthy way to do things,
but I'd like to see if there's a better way.

Thanks,
Mike.


Tom Ogilvy

round number for unknown num_digits
 
Not sure you need the format function, but anyway:

if Slider1.Value 0 then
s = "#,##0." & Application.Rept("0", Slider1.Value)
With ActiveCell
.NumberFormat = s
.Value = Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value),
s)
End With
else



--
Regards,
Tom Ogilvy


"Michael Malinsky" wrote in message
ups.com...
I want to have a control on a UserForm (scollbar, slider, other
suggestions) in which the user can select the number of decimal places
(1 through 9) or significant digits (-1 through -9) for a range of
cells. The siginficant digits is easy:

ActiveCell.Value =
Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value), _
"#,##0")

I'm having trouble coming up with a way to do the decimal places
portion of this code. The only solution I can come up with is to use a
Select...Case for each value 1 through 9 and have the appropriate
formatting under each, which seems like the lengthy way to do things,
but I'd like to see if there's a better way.

Thanks,
Mike.




Michael Malinsky

round number for unknown num_digits
 
I really don't NEED the format function, but I like to do the
formatting via code.

Anyway...this appears to do the trick...Thanks!

Tom Ogilvy wrote:
Not sure you need the format function, but anyway:

if Slider1.Value 0 then
s = "#,##0." & Application.Rept("0", Slider1.Value)
With ActiveCell
.NumberFormat = s
.Value = Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value),
s)
End With
else



--
Regards,
Tom Ogilvy


"Michael Malinsky" wrote in message
ups.com...
I want to have a control on a UserForm (scollbar, slider, other
suggestions) in which the user can select the number of decimal places
(1 through 9) or significant digits (-1 through -9) for a range of
cells. The siginficant digits is easy:

ActiveCell.Value =
Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value), _
"#,##0")

I'm having trouble coming up with a way to do the decimal places
portion of this code. The only solution I can come up with is to use a
Select...Case for each value 1 through 9 and have the appropriate
formatting under each, which seems like the lengthy way to do things,
but I'd like to see if there's a better way.

Thanks,
Mike.



Dave Peterson

round number for unknown num_digits
 
I think that Tom's suggestion is that the line that does all the work is this
line: ".numberformat= s"

You could drop the Format() from the .value line.



Michael Malinsky wrote:

I really don't NEED the format function, but I like to do the
formatting via code.

Anyway...this appears to do the trick...Thanks!

Tom Ogilvy wrote:
Not sure you need the format function, but anyway:

if Slider1.Value 0 then
s = "#,##0." & Application.Rept("0", Slider1.Value)
With ActiveCell
.NumberFormat = s
.Value = Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value),
s)
End With
else



--
Regards,
Tom Ogilvy


"Michael Malinsky" wrote in message
ups.com...
I want to have a control on a UserForm (scollbar, slider, other
suggestions) in which the user can select the number of decimal places
(1 through 9) or significant digits (-1 through -9) for a range of
cells. The siginficant digits is easy:

ActiveCell.Value =
Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value), _
"#,##0")

I'm having trouble coming up with a way to do the decimal places
portion of this code. The only solution I can come up with is to use a
Select...Case for each value 1 through 9 and have the appropriate
formatting under each, which seems like the lengthy way to do things,
but I'd like to see if there's a better way.

Thanks,
Mike.


--

Dave Peterson

Michael Malinsky

round number for unknown num_digits
 
Well then I learned something...I didn't know that .numformat existed.

Thanks!

Dave Peterson wrote:
I think that Tom's suggestion is that the line that does all the work is this
line: ".numberformat= s"

You could drop the Format() from the .value line.



Michael Malinsky wrote:

I really don't NEED the format function, but I like to do the
formatting via code.

Anyway...this appears to do the trick...Thanks!

Tom Ogilvy wrote:
Not sure you need the format function, but anyway:

if Slider1.Value 0 then
s = "#,##0." & Application.Rept("0", Slider1.Value)
With ActiveCell
.NumberFormat = s
.Value = Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value),
s)
End With
else



--
Regards,
Tom Ogilvy


"Michael Malinsky" wrote in message
ups.com...
I want to have a control on a UserForm (scollbar, slider, other
suggestions) in which the user can select the number of decimal places
(1 through 9) or significant digits (-1 through -9) for a range of
cells. The siginficant digits is easy:

ActiveCell.Value =
Format(WorksheetFunction.Round(ActiveCell.Value, Slider1.Value), _
"#,##0")

I'm having trouble coming up with a way to do the decimal places
portion of this code. The only solution I can come up with is to use a
Select...Case for each value 1 through 9 and have the appropriate
formatting under each, which seems like the lengthy way to do things,
but I'd like to see if there's a better way.

Thanks,
Mike.


--

Dave Peterson




All times are GMT +1. The time now is 11:36 PM.

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