Problema al digitar hora y minuto con macro vba

La siguiente macro separa hora y minuto al digitar 3 y 4 dígitos.

Pero me da dificultades cuando dígito 1800 y me arroja 0.:75 debería 18:00, también con 12:00 y me arroja 0::.5 y otros.

    If Target.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("Y:Y,Z:Z,AB:AB,AC:AC")) Is Nothing Then
            Select Case Len(Target.Value)
                Case Is = 3: Target.Value = Mid(Target.Value, 1, 1) & ":" & Mid(Target.Value, 2, 3)
                Case Is = 4: Target.Value = Mid(Target.Value, 1, 2) & ":" & Mid(Target.Value, 3, 4)
            End Select
    End If

1 respuesta

Respuesta
1

Prueba lo siguiente:

  If Target.Count > 1 Then Exit Sub
  If Not Intersect(Target, Range("Y:Y,Z:Z,AB:AB,AC:AC")) Is Nothing Then
    Application.EnableEvents = False
    Select Case Len(Target.Value)
      Case Is = 3: Target.Value = Mid(Target.Value, 1, 1) & ":" & Mid(Target.Value, 2, 3)
      Case Is = 4: Target.Value = Mid(Target.Value, 1, 2) & ":" & Mid(Target.Value, 3, 4)
    End Select
    Application.EnableEvents = True
  End If

Cuando estás en el evento change y modificas la misma celda, entonces se activa nuevamente el evento y modifica otra vez la celda y entra en ciclo.

Entonces para que no se active el evento, es necesario "apagar" los eventos con la instrucción:

EnableEvents = False

Pero después de actualizar la celda, es necesario volver a activar los eventos con:

EnableEvents = True

De esa manera cuando captures algo en la celda, los eventos se activarán.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas