# Funcion SIFECHA



## maydoa (Oct 13, 2006)

Hola de nuevo   !

Hoy hago esta consulta:

He creado una funcion para incluir la formula SIFECHA (DATEIF) en la lista de funciones personalizadas por el usuario. (esta formula solo viene en el  asistente de lista de funciones no viene en Insertar>Formulas)

Creo la funcion en un modulo de visual basic excel y guardo el libro como complemento de microsoft excel, entonces mi pregunta es la siguiente:

¿Existe algun problema al crear Formula SIFECHA como funcion personalizada en la lista de funciones?

la funcion es esta:

 Function SIFECHA(numero1, numero2, numero3 As Integer)

 numero1 = "A1"
 numero2 = "B2"
 numero2 = "Y"

 End Function

Si no me explique bien perdonenme e intentare explicarme mejor    

De nuevo muchas Gracias!

¡Un SAludo!


----------



## maydoa (Oct 13, 2006)

Perdon la funcion es esta:

 Function SIFECHA(numero1, numero2, numero3 As Integer)

numero1 = "A1"
numero2 = "B2"
numero3 = "Y"

End Function 

Gracias Un Saludo!


----------



## RalphA (Oct 13, 2006)

maydoa:

Para evitar cualquier posibilidad de confusión o de interferencia, siempre es aconsejable usar un nombre distinto.  Por ejemplo, podrías usar
“SIFECHA1()”, o “SIFECHAm()” – “m” de su pseudónimo, “maydoa”, -etc.

Lo escencial es usar otro nombre, y, lo más indicado es agregar un sólo símbolo más, al final, ojalá fácil de recordar, como la cifra “1”, o la primera letra de tu nombre.  ¿Qué te parece?


----------



## maydoa (Oct 14, 2006)

Muchas Gracias RalphA 

Voy a hacer pruebas a ver como me queda la funcion ok? 

Ya te comento ok?

Gracias de nuevo


----------



## maydoa (Oct 16, 2006)

Hola !

Bueno he estado hoy probando (To make funcion)la funcion y finalmente lo he hecho de la siguiente manera:

Ya que DATEDIF Calculed bad Then my Functions is:

For Days:

Function MaydoaDias(valor1, valor2) As Integer
'valor2= A2
'valor1= A1
MaydoaDias = valor2 - valor1

End Function

For Month:


Function MaydoaMeses(valor1, valor2) As Integer

MaydoaMeses = (valor2 - valor1) * 12 / 365.2564
End Function

For Years:

Function MaydoaAños(valor1, valor2) As Integer

MaydoaAños = (valor2 - valor1) / 365.2564

End Function

Me ha sido imposible (me it has been imposible) unir, juntar estas tres funciones ( to unite, to join these three functions)pero espero hacerlo algun dia(But some day I hope To do it)  

¿Que te parece? 

Muchas Gracias!
¡Un SAludo!


----------



## Greg Truby (Oct 16, 2006)

Hola Maydoa,

¿Qué es lo que pretende hacer usted con esta función?  Veo varias cosas, digamos, «curiosas»...
Está asignando valores a los argumentos recibidos en la función. Por lo general esto no se hace.  Dado que la forma por defecto (default) es _ByRef_ y no _ByVal_ y usted no ha especificado, un cambio a _numero1_ o a _numero2_ etc. debe de resultar en un cambio permanente.  Cambiar valores así se hace "debug" (purificar) el programa sumamente difícil.
Su función no devuelve un valor.  _*SiFecha*_ nunca está asignado un valor y tampoco su declaración indica qué tipo de valor estará devuelto.
Su declaración indica que _numero3_ es de tipo _Integer_ pero usted está asignando un valor "Y" que resultará en un error.
Lo que dice Rafa sobre asegurarse que el nombre que usted crea es cierto; asegúrese que sea único.  Por lo general yo lo hago con agregar un «tag» (etiqueta) la inicio como _fn_ o _udf_ ejemplos:
	
	
	
	
	
	



```
Public Function fnIsOpen(ByVal intArg1 As Integer, strArg2 As String) As Boolean
    '...CODE...
    fnIsOpen = False
End Function

Private Static Function udfMyOtherFunction(ByRef lngPosition As Long) As String
    '...code...
    udfMyOtherFunction = "Hello World"
End Function
```
Además de asegurar que sus nombres serán únicos, hacer eso ayuda porque todo sus funciones estarán agrupados juntos en listado hechos por _intellisense_ en el editor de VBA y en listado al momento de insertar funciones.

Cordialmente,


----------

