Darle formato a un left y right

Tengo un valor de texto: 001-240365-0006X que quiero recoger el 240365 y convertirlo a fecha, hasta el momento he llegado hasta aquí:

Dim ced As String
Dim uno As String
Dim Dos As String
ced = Me.Cedula
uno = Left(cadena, 9)
Dos = Right(uno, 6)

Hasta aquí todo bien, sin embargo al querer hacer el formato

msgbox Format(Dos, "dd-mm-yyyy")
el resultado aparece vacío en el  msgbox

2 Respuestas

Respuesta
2

Si quieres responderte tu mismo allá tu, pero lo que has puesto se resume en

Textofecha = Format(Mid([cedula], 5, 6), "dd/mm/yyyy")

Por otro lado, déjame decirte que ningún ordenador, ninguno, trabaja con fechas. Trabajan con números. Al día 0/01/1900 se le asignó el 1, hoy andamos por el 42 mil y pico. Por tanto, si vas a convertir 240365 en fecha, creo que te saldrá una en la que todos estaremos calvos, yo seguro.

Agradezco tu respuesta, esta duda la tuve desde hace mucho tiempo, la cual también la había realizado, y no tuve respuesta, yo la traté de contestar ya que si obtuve algún resultado favorable, pues nada mejor que colaborar.

Probé tu sugerencia del formato de fecha, sin embargo me devuelve otro numero no correspondiendo al que estoy recogiendo, sin embargo ayer en la noche buscando como hacerlo lo logré así, si tienes una sugerencia yo humildemente acepto de los expertos, me imagino que debe de haber otra manera más sencilla de llegar a este resultado:

Dim ced As String
Dim uno As Variant
Dim Dos As Variant

If IsNull(Me.Cedula) Then
Exit Sub
End If
ced = Me.Cedula
uno = Left(ced, 9)
Dos = Right(uno, 6)

TextoFecha = Left(Dos, 2) & "/" & Mid(Dos, 3, 2) & "/" & Right(Dos, 2)
Me.txtFechaNac = CDate(TextoFecha)

Si dl texto es tal como lo has puesto

001-240365-0006X

El carácter 5 es el 2 y si cuentas 6 te saldrá el 240365 que es lo que habías puesto tu en la pregunta.

La instrucción Mid se compone de cadena, en que dígito empieza y cuantos dígitos a partir del que empieza debe contar

Respuesta
1

Está dando en blanco porque no tenía valor en el campo "Cedula"

Queda así:

Dim ced As String
Dim uno As String
Dim Dos As String

If IsNull(Me.Cedula) Then
Exit Sub
End If
ced = Me.Cedula
uno = Left(ced, 9)
Dos = Right(uno, 6)
Me.txtfech = Format(Dos, "dd-mm-yyyy")

Sólo falta arreglar el formato de txtfech

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas