Problemas al Actualizar Función Personalizada

20/12/2004 - 15:05 por Bart | Informe spam
Hola grupo, tengo el siguiente problema con una función personalizada:

Cuando creo por primera vez la fórmula toma muestra el valor que es, pero
cuando cambio el valor de las celdas a que hace referencia no actualiza el
valor calculado. El problema no es por configuración de Excel porque si hago
el cálculo directamente, sin utilizar la función que cree si se actualiza.

La función personalizada tiene dos variables, una que es una celda y otra
que es un rango. El problema esta cuando modifico alguno de los valores
contenidos en este último. La verdad no se que hacer.

Este es el contenido de la función en dos versiones y ambas presentan el
mismo problema:

Function PrecioAct(ByVal Precio As Range, ByVal Pos As Integer) As Double
Dim i As Double
Dim Vector As Range
Dim Capital As Double
Dim cell

i = 1
Set Vector = Range(Precio.Offset(0, 1), Precio.Offset(0, Pos))
Capital = Precio.Value

For Each cell In Vector
i = i * (1 + cell)
Next
PrecioAct = Round(Capital * i, 2)
End Function

Function Conver(ByVal Precio As Range, ByVal Pos As Integer) As Double
Dim i As Double
Dim j As Integer
Dim Capital As Double

i = 1
For j = 1 To Pos
i = i * (1 + Precio.Offset(0, j))
Next
Capital = Precio.Value

Conver = Round(Capital * i, 2)
End Function

Gracias y saludos.

B.M
 

Leer las respuestas

#1 Daniel.M
20/12/2004 - 15:54 | Informe spam
Hola,

Necesita usar de todas celdas con argumentos de la funcion. Es la sola manera
que Excel 'sabe' que hay un cambio en su celda (y activar el motor de
recalculacion).

Por ejemplo:
=conver2(G2,H2:J2)
o
=conver2(G2,DESREF(G2,0,1,1,3))

En el ultimo ejemplo, puede cambiar el 3 por un otra numero.

y este codigo VBA:

Function Conver2(ByVal Precio As Range, ByVal Interest As Range) As Double
Dim i As Double
Dim C As Range
Dim Capital As Double

i = 1
For Each C In Interest
i = i * (1 + C)
Next C
Capital = Precio.Value

Conver2 = Round(Capital * i, 2)
End Function

Saludos,

Daniel M.

"Bart" wrote in message
news:
Hola grupo, tengo el siguiente problema con una función personalizada:

Cuando creo por primera vez la fórmula toma muestra el valor que es, pero
cuando cambio el valor de las celdas a que hace referencia no actualiza el
valor calculado. El problema no es por configuración de Excel porque si hago
el cálculo directamente, sin utilizar la función que cree si se actualiza.

La función personalizada tiene dos variables, una que es una celda y otra
que es un rango. El problema esta cuando modifico alguno de los valores
contenidos en este último. La verdad no se que hacer.

Este es el contenido de la función en dos versiones y ambas presentan el
mismo problema:

Function PrecioAct(ByVal Precio As Range, ByVal Pos As Integer) As Double
Dim i As Double
Dim Vector As Range
Dim Capital As Double
Dim cell

i = 1
Set Vector = Range(Precio.Offset(0, 1), Precio.Offset(0, Pos))
Capital = Precio.Value

For Each cell In Vector
i = i * (1 + cell)
Next
PrecioAct = Round(Capital * i, 2)
End Function

Function Conver(ByVal Precio As Range, ByVal Pos As Integer) As Double
Dim i As Double
Dim j As Integer
Dim Capital As Double

i = 1
For j = 1 To Pos
i = i * (1 + Precio.Offset(0, j))
Next
Capital = Precio.Value

Conver = Round(Capital * i, 2)
End Function

Gracias y saludos.

B.M

Preguntas similares