ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   User Defined Range (https://www.excelbanter.com/excel-programming/424072-user-defined-range.html)

caveman.savant

User Defined Range
 
I have a UDF that calculates the percentage of a value (rVal) based on
a sum of similar values (rTot).
It returns a value multipled by another value (rTarg) and rounded.

Function FigurePert(rTot As Integer, rVal As Integer, rTarg) As
Variant
xx = (rVal / rTot)
FigurePert = Round(xx * rTarg, 0)
End Function

I would like rTot be the value of a given range that the user chooses
by a defined Name or selected.


Niek Otten

User Defined Range
 
It's always better to supply input to the function via arguments, the way
you do now. That is the only way Excel can determine dependencies. Any other
way cells may not recalculate when needed or in the wrong order.
Sometimes adding Application.Volatile is suggested as a solution, but there
is no guarantee this will always work correctly and potentially it
calculates too often.

--
Kind regards,

Niek Otten
Microsoft MVP - Excel


"caveman.savant" wrote in message
...
I have a UDF that calculates the percentage of a value (rVal) based on
a sum of similar values (rTot).
It returns a value multipled by another value (rTarg) and rounded.

Function FigurePert(rTot As Integer, rVal As Integer, rTarg) As
Variant
xx = (rVal / rTot)
FigurePert = Round(xx * rTarg, 0)
End Function

I would like rTot be the value of a given range that the user chooses
by a defined Name or selected.



caveman.savant

User Defined Range
 
The range can be large and dynamic so typing in the values would be
difficult

On Feb 13, 6:45*am, "Niek Otten" wrote:
It's always better to supply input to the function via arguments, the way
you do now. That is the only way Excel can determine dependencies. Any other
way cells may not recalculate when needed or in the wrong order.
Sometimes adding Application.Volatile is suggested as a solution, but there
is no guarantee this will always work correctly and potentially it
calculates too often.

--
Kind regards,

Niek Otten
Microsoft MVP - Excel

"caveman.savant" wrote in message

...



I have a UDF that calculates the percentage of a value (rVal) based on
a sum of similar values (rTot).
It returns a value multipled by another value (rTarg) and rounded.


Function FigurePert(rTot As Integer, rVal As Integer, rTarg) As
Variant
* *xx = (rVal / rTot)
* *FigurePert = Round(xx * rTarg, 0)
End Function


I would like rTot be the value of a given range that the user chooses
by a defined Name or selected.



Niek Otten

User Defined Range
 
You don't have to type the vales, just supply a reference to the range as an
argument to the function.

But what do you want the function to do with rTot? It is defined an Integer
now, I don't see what it should do with a range.
BTW, use Long instead of Integer to avoid overflow and improve calculation
speed.

--
Kind regards,

Niek Otten
Microsoft MVP - Excel

"caveman.savant" wrote in message
...
The range can be large and dynamic so typing in the values would be
difficult

On Feb 13, 6:45 am, "Niek Otten" wrote:
It's always better to supply input to the function via arguments, the way
you do now. That is the only way Excel can determine dependencies. Any
other
way cells may not recalculate when needed or in the wrong order.
Sometimes adding Application.Volatile is suggested as a solution, but
there
is no guarantee this will always work correctly and potentially it
calculates too often.

--
Kind regards,

Niek Otten
Microsoft MVP - Excel

"caveman.savant" wrote in message

...



I have a UDF that calculates the percentage of a value (rVal) based on
a sum of similar values (rTot).
It returns a value multipled by another value (rTarg) and rounded.


Function FigurePert(rTot As Integer, rVal As Integer, rTarg) As
Variant
xx = (rVal / rTot)
FigurePert = Round(xx * rTarg, 0)
End Function


I would like rTot be the value of a given range that the user chooses
by a defined Name or selected.




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

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