Como bien me aconsejó Hector Miguel en el post titulado:
Re: Ayuda en las funciones definidas por el usuario
de fecha: 8/26/2004 10:31:31 PM
para hacer una función definida por el usuario que use
rangos, lo único que se ha de hacer es usar como
argumentos alguna variable tipo Range.
He probado ha construir una función que sume, de igual
forma que lo hace la función =SUMA(). La función es la
siguiente:
Function sumado(R As Range) As Double
Dim s As Double
For Each c In R
s = s + c
Next
sumado = s
End Function
Pongamos los siguientes valores:
en A1 --> 1
en A2 --> 2
en A3 --> 3
en A10 --> 4
Si aplicamos la función suma, obtenemos la suma correcta
que es 10
=SUMA(A1:A3;A10)
Por el contrario si aplicamos la fórmula que hemos creado:
=sumado(A1:A3;A10)
obtenemos un error del tipo #¡VALOR!
Pero la función 'sumado' no está mal ya que si la
llamamos desde un procedimiento funciona
Sub prueba()
MsgBox sumado(Range("A1:A3,A10"))
End Sub
Y también funciona si el rango es un sólo bloque de
celdas. Por ejemplo: =sumado(A1:A3) da como resultado 6.
Después de dar vueltas al problema he visto que si en la
fórmula que escribes añades unos paréntesis se soluciona:
=sumado((A1:A3;A10)) y el resultado es 10.
¿Sabéis como conseguir que la fórmula funcione sin
necesidad de estos paréntesis, al igual que la función
=SUMA()?
Gracias.
Adolfo
Leer las respuestas