Resultado de una función en formato fecha

Tengo una función en Excel VBA, que convierte una fecha en formato juliano a formato de fecha normal dd/mm/yyyy; y está funcionando correctamente. Sin embargo, el resultado me lo da en formato de número general y tengo que cambiar el formato de número de la celda para que me lo dé en el formato de fecha.

¿Cómo puedo hacer para que el resultado de la función me lo dé en automático en formato fecha? Dd/mm/yyyy

2 Respuestas

Respuesta
1

Sólo debes agregar después de mandar a poner la fecha la siguiente instrucción:

Selection.NumberFormat = "dd/mm/yyyy"

Richard; 

Ya intenté agregar esa línea al código de mi función y sigue dándome el mismo resultado.

Te comparto el código, pudiera ser que estoy haciendo algo mal.

Gracias, saludos.

Puedes y copiar el código para ayudarte. No mandes la imagen

Function gregoriana(juliana As Long) As Date

Dim siglo As Long
Dim añoAnterior As Long
Dim dia As Long
Dim fechaIniTexto As String
Dim fechaIni As Date
Dim fechaFinal As Date
dia = Right(juliana, 3)
siglo = (Right(juliana, 6) - Right(juliana, 5)) / 100000
If siglo = 1 Then
añoAnterior = ((Right(juliana, 5) - Right(juliana, 3)) / 1000) + (2000 - 1)
Else
añoAnterior = ((Right(juliana, 5) - Right(juliana, 3)) / 1000) + (1900 - 1)
End If
fechaIniTexto = "31/12/" & añoAnterior
fechaIni = CDate(fechaIniTexto)
fechaFinal = fechaIni + dia
gregoriana = CDate(fechaFinal)
Selection.NumberFormat = "dd / mm / yyyy"

End Function

La probé sin otra modificación y a mi me funciona. En todo caso prueba con esto:

gregoriana = Format(CDate(fechaFinal), "dd/mm/yyyy")

Function gregoriana(juliana As Long) As Date
Dim siglo As Long
Dim añoAnterior As Long
Dim dia As Long
Dim fechaIniTexto As String
Dim fechaIni As Date
Dim fechaFinal As Date
dia = Right(juliana, 3)
siglo = (Right(juliana, 6) - Right(juliana, 5)) / 100000
If siglo = 1 Then
    añoAnterior = ((Right(juliana, 5) - Right(juliana, 3)) / 1000) + (2000 - 1)
Else
    añoAnterior = ((Right(juliana, 5) - Right(juliana, 3)) / 1000) + (1900 - 1)
End If
fechaIniTexto = "31/12/" & añoAnterior
fechaIni = CDate(fechaIniTexto)
fechaFinal = fechaIni + dia
gregoriana = Format(CDate(fechaFinal), "dd/mm/yyyy")
End Function

¡Gracias! 

Listo ya lo logré, quizá el tema es como ponía la línea.

Así es como me funcionó:

Selection.NumberFormat = "m/d/yyyy"

Tal ves en mi VBA lo toma en formato americano.

Saludos.

Respuesta
1

Kike: Esta pregunta me ha salido sugerida por el sistema y la verdad es que Excel no es mi fuerte, pero para formatear una Fecha en VBA puedes hacer. Ejemplo de un TextBox que se llame FechaCorta

Me.FechaCorta = FormatDateTime (FechaAFormatear, vbShortDate)

o

Me.FechaCorta = FormatDateTime (FechaAFormatear, 2)

Espero haberte ayudado. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas