Convertir Números con dos decimales a Hora

Sres. T.E.

Tengo en código siguiente en un Macro:

   Sub ConvertirNumerohhmm()

    Dim TxtStrEnt As String

    Dim Ent       As String

    TxtStrEnt = CStr(TrabEnt)

    Ent = Cells(1, 1)

    Ent = Replace(Cells(1, 1).Value, ",", ":")

Cells(1, 2) = Ent

 End Sub

La Celda A1 tiene el valor 13,40 “A1=13,40

Al ejecutar la macro pega el Valor en la celda B1 como 13:04, cuando debería ser 13:40

Les agradezco de antemano

La idea es convertir el valor 13,40 en hora, para poder operaciones aritméticas tal como:

13:40  - 2:00

Respuesta
Sub ConvertirNumerohhmm()
    Dim TxtStrEnt As String
    Dim Ent       As String
    ' Obtener el valor de la celda A1 y convertirlo a string
    TxtStrEnt = CStr(Cells(1, 1).Value)
    ' Reemplazar la coma con dos puntos
    Ent = Replace(TxtStrEnt, ",", ":")
    ' Pegar el valor en la celda B1
    Cells(1, 2).Value = Ent
    ' Convertir el valor en B1 a formato de hora
    Cells(1, 2).NumberFormat = "h:mm"
End Sub

He corregido tu codigo.

Hola Llister.

He copiado el código recibido a un Modulo y lo he ejecutado, el valor que pega en la celda B1 es 13:04 y no 13:40, no se que hacer para que pegue el mismo valor convertido en hora "hh:mm" por eso acudo a TodoExpertos

Ejecuta tu mismo para saber si funciona como lo deseo.

Saludos

Tedejare una imagen para que veas que el problema no esta en el código.
Imagen

Ok detecte cual es el problema, observando tu imagen me dio cuenta que el valor de la celda A1 le tiene el formato de texto cuando yo  le tengo formato Numérico con dos decimales.

Pienso que en la consulta "La Celda A1 tiene el valor 13,40 “A1=13,40”" no especifique que 13,40 es un valor Numérico con dos decimales.

Ahora como seria el código para convertir numero con dos decimales a hora "hh:mm" mostrando 13,40 como 13:40

Saludos

Nuevamente el código que esta con lo cela A1 en formato numero y los dos decimales.

Sub ConvertirNumerohhmm()
    Dim TxtStrEnt As String
    Dim Ent As String
    Dim horas As Integer
    Dim minutos As Integer
    ' Obtener el valor de la celda A1
    TxtStrEnt = Cells(1, 1).Value
    ' Verificar si el valor tiene una coma
    If InStr(TxtStrEnt, ",") > 0 Then
        ' Reemplazar la coma con un punto para manejar el valor decimal correctamente
        TxtStrEnt = Replace(TxtStrEnt, ",", ".")
    End If
    ' Convertir el valor a Double para separar horas y minutos
    Dim valor As Double
    valor = CDbl(TxtStrEnt)
    ' Separar la parte entera (horas) y la parte decimal (minutos)
    horas = Int(valor)
    minutos = Round((valor - horas) * 100)
    ' Formatear el tiempo como "hh:mm"
    Ent = Format(horas, "00") & ":" & Format(minutos, "00")
    ' Pegar el valor en la celda B1
    Cells(1, 2).Value = Ent
    ' Convertir el valor en B1 a formato de hora
    Cells(1, 2).NumberFormat = "hh:mm"
End Sub

Te de igual forma te dejo una imagen espero que ahora te pueda ser de ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas