Visual Basic para Aplicaciones - llamar funcion VBA desde otra en excel

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

llamar funcion VBA desde otra en excel

Publicado por Palbo (30 intervenciones) el 23/10/2012 11:04:57
Hola,

estoy intentando llamar una funcion definida por mi, desde otra. la primera:

Function MiFuncion1(Xi, Yi As Range) As Double
MiFuncion1= Evaluate("sum(" & Xi.Address(True) & "-" & Yi.Address(True) & ")")
End Function

funciona bien cuando la utilizo en la hoja de calculo.

Ahora intento llamarla desde otra en mi codigo y me da error #VALOR!. la estoy llamando asi:

Function MiFuncion2(Xi, Yi As Range) As Double
MiFuncion2= Evaluate("MiFuncion1(" & Xs1.Address(True) & "," & Ys1.Address(, , , True) & ")")
End Function

esto es una prueba para despues complicar MiFuncion2.

pueden decirme que error estoy cometiendo?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

llamar funcion VBA desde otra en excel

Publicado por JuanC (565 intervenciones) el 23/10/2012 14:11:16
no es necesario usar Evaluate para llamar a una función propia

1
2
3
4
5
6
7
8
Function MiFuncion1(Xi As Range, Yi As Range) As Double
MiFuncion1 = Evaluate("sum(" & Xi.Address(True) & "," & Yi.Address(True) & ")")
End Function
 
 
Function MiFuncion2(Xi As Range, Yi As Range) As Double
MiFuncion2 = MiFuncion1(Xi, Yi)
End Function


Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

llamar funcion VBA desde otra en excel

Publicado por Pablo (30 intervenciones) el 23/10/2012 14:21:57
Gracias pablo,

ahora quisiera complicarlo un poco. Necesito multiplicar cada valor de mi funcion por un rango de datos:

function Mifuncion2 (Ci as range, Xi As Range, Yi As Range)
C1*Mifuncion1(X1,Y1)+C2*Mifuncion1(X2,Y2)+...+Cn*mIfUNCION1(Xn,Yn)

como pudiera entonces hacerlo?

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

llamar funcion VBA desde otra en excel

Publicado por JuanC (565 intervenciones) el 23/10/2012 16:43:33
una posibilidad... (todo depende de como estás distribuidos los datos en la hoja)

1
2
3
4
5
6
7
8
9
Function Mifuncion2(Ci As Range, Xi As Range, Yi As Range) As Double
Dim suma#
Dim i&
suma = 0
For i = 0 To Ci.Count
    suma = suma + C1.Offset(i).Value * Mifuncion1(X1.Offset(i), Y1.Offset(i))
Next
Mifuncion2 = suma
End Function


Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar