Saltar al contenido

Formato obligatorio de tiempo HH:MM al escribir en textbox


Recommended Posts

publicado

Buen día y con el gusto de saludarle nuevamente expertos recurro a ustedes para solicitar su valiosa colaboración en el mejor de los sentidos ya que tengo un textbox al que le quiero poner un formato de hora HH:MM para que al momento de escribir obligue al usuario final a poner ese formato de tiempo exactamente, he intentado hacerlo pero en mi programación veo muchos errores, por ejemplo cuando le doy con las teclas direccionales para seleccionar y me posiciono en el espacio 3 y le doy una letra este la acepta; bueno de antemano el textbox no debe aceptar letras, unicamente números y en el espacio 3 el signo de dos puntos (:) pero como lo digo al hacer eso lamentablemente ya no respeta y quiero que se exactamente  HH:MM y ningún otro carácter mas que los que ya comente, espero haberme explicado, anexo archivo muestra y quedo atento a sus indicaciones y comentarios constructivos. de antemano mil gracias.

Libro1.xlsm

publicado

Hola no entiendo muy bien la idea final pero podrías probar esto más sencillo

 

Valor = UserForm1.TextBox1.Value

If VBA.IsDate(Valor) Then                                            ' esto directamente comprueba si lo que se ha metido es una fecha
UserForm1.TextBox1.Value = Replace(Valor, ".", ":")   ' Te cambia el . por : ya que 22.45 también lo acepta como fecha
MsgBox "es Fecha"
Else: MsgBox "no valido"
End If

Adaptalo como creas

Espero que te sirva

 

  • 2 months later...
publicado

Seguro que hay otras formas, esta es una de ellas.

Si no me he equivocado esta macro te permite registrar la hora entre las 00:00 y las 23:59.

Private Sub TextBox1_Change()
TextBox1 = Left(TextBox1, TextBox1.SelStart)
Select Case Len(TextBox1)
   Case 1:
      If InStr("012", TextBox1) = 0 Then
         TextBox1 = ""
         Exit Sub
      End If
   Case 2:
      Select Case Left(TextBox1, 1)
         Case 0, 1
            If InStr("0123456789", Right(TextBox1, 1)) = 0 Then
               TextBox1 = Left(TextBox1, 1)
               Exit Sub
            End If
          Case 2
            If InStr("0123", Right(TextBox1, 1)) = 0 Then
               TextBox1 = Left(TextBox1, 1)
               Exit Sub
            End If
      End Select
      TextBox1 = TextBox1 & ":"
      Exit Sub
   Case 3:
      If Right(TextBox1, 1) <> ":" Then
         TextBox1 = Left(TextBox1, 2)
      End If
   Case 4:
      If InStr("012345", Right(TextBox1, 1)) = 0 Then
         TextBox1 = Left(TextBox1, 3)
         Exit Sub
      End If
   Case 5:
      If InStr("0123456789", Right(TextBox1, 1)) = 0 Then
         TextBox1 = Left(TextBox1, 4)
         Exit Sub
      End If
End Select
End Sub

 

publicado

con eso esta mas que perfecto maestro mil gracias, algún día espero tener la capacidad que tienen para resolver estos problemas "excelianos!:D vaya que me ha funcionado!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.