** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Word
  Mensajes nuevos Mensajes nuevos RSS - Formato de hora en textbox de userform
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFormato de hora en textbox de userform

 Responder Responder
Autor
Mensaje
Antonio Pedro Ver desplegable
Asiduo
Asiduo


Unido: 13/Diciembre/2005
Estado: Sin conexión
Puntos: 236
Enlace directo a este mensaje Tema: Formato de hora en textbox de userform
    Enviado: 29/Julio/2017 a las 23:15
Hola Buenas Noches, estoy retomando un antiguo proyecto en Word 2007 con Access, he creado un formulario para cuando abro un determinado documento de Word. Lo que pretendo y no doy con la tecla es que cuando abra el formulario me muestre 00:00 para luego yo insertar la hora.
Tengo insertado la siguiente instrucción que me funciona bien, pero no consigo que me salga al abrir el documento 00:00, que tendría que hacer, lo mismo es una tontería pero no doy con ella.
Sub AutoNew()
UserForm1.Show
End Sub
Private Sub CommandButton1_Click()
Dim LName As Range
Set LName = ActiveDocument.Bookmarks("Horario").Range
LName.Text = Me.TextBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm1_Activate()
TextBox1 = Format(TextBox1, "00:00")
End Sub

Un Saludo.

Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 4992
Enlace directo a este mensaje Enviado: 30/Julio/2017 a las 00:43

En vez de...

  TextBox1 = Format(TextBox1, "00:00") 

... prueba con:

  TextBox1.Value = "00:00"

Pregunta lo que no sabes, recuérdalo para cuando te pregunten y ofrece tu ayuda (reconforta).

Mi sitio_web con ejemplos Excel.
Arriba
Antonio Pedro Ver desplegable
Asiduo
Asiduo


Unido: 13/Diciembre/2005
Estado: Sin conexión
Puntos: 236
Enlace directo a este mensaje Enviado: 31/Julio/2017 a las 21:16
Hola AnSanVal y gracias por contestar, he hecho el cambio que me has sugerido pero no hace lo que deseo.
Private Sub UserForm1_Load()
TextBox1.Value = "00:00"
End Sub
Lo que busco es como una especie de mascara de entrada.
Alguna sugerencia más. Un saludo.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 4992
Enlace directo a este mensaje Enviado: 01/Agosto/2017 a las 01:17
Con «... cuando abra el formulario me muestre 00:00 para luego yo insertar la hora...», yo supuse un texto guía como recuerdo de la sintaxis. Además en el evento Activate (que mostraste en tu primer mensaje).

Si lo que pretendes es una máscara que permanezca mientras escribes (al estilo de la existente en Access), que yo sepa, Excel no dispone de dicha herramienta. (editado 2) La consulta es para Word Embarrassed. Mi ejemplo 66 supongo que funcionará también en Word, pero no he hecho la prueba.

En alguna ocasión lo he hecho con un pequeño truco, consistente en tapar el cuadro de texto con una etiqueta que muestra la máscara mientras el usuario escribe en el cuadro de texto, el texto del cuadro de texto no se ve. En algún sitio (no recuerdo donde) debo tener el ejemplo.


EDITADO:  Acabo de recordar que en junio pasado subí el ejemplo (núm. 66) a mi sito web, el enlace está abajo de este mensaje. El ejemplo está pensado para escribir la fecha pero con algunos cambios puedes adaptarlo para escribir la hora.




Editado por AnSanVal - 01/Agosto/2017 a las 12:26
Pregunta lo que no sabes, recuérdalo para cuando te pregunten y ofrece tu ayuda (reconforta).

Mi sitio_web con ejemplos Excel.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 4992
Enlace directo a este mensaje Enviado: 01/Agosto/2017 a las 13:17
¡No!, no funciona con Word, hay comandos que Word no reconoce, por ejemplo  EoMonth (fin de mes) y tampoco la manipulación de celdas (esto es obvio).

EoMonth se puede paliar fácilmente con...
ultimo = Day(DateSerial(Val(Left(TextBoxFecha, 4)), Val(Mid(TextBoxFecha, 6, 2)) + 1, 1) - 1)
... pero también hay que modificar el código para que escriba la fecha en el documento de Word.

Cuando tenga un poco de tiempo lo intentaré.


Pregunta lo que no sabes, recuérdalo para cuando te pregunten y ofrece tu ayuda (reconforta).

Mi sitio_web con ejemplos Excel.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 4992
Enlace directo a este mensaje Enviado: 02/Agosto/2017 a las 12:29

Se podrá descargar el ejemplo Máscara de hora para Word con VBA, durante un par de semanas.

Notas: LabelHora debe cubrir a TextBoxHora. El texto de TextBoxHora no se ve pero el cursor sí.

El código no está sangrado para reducir errores al copiar/pegar.

Objetos en el formulario:  UserForm1 > (Caption: ASV - Escribir hora.) > Hight 97,5 > With 195,75

TextBoxHora,  Left 54 > Top 12 > Height 15,75 > Width 90

LabelHora,  Left 42 > Top 12 > Height 18 > Width 102

CommandButtonOK (Caption: ACEPTAR) > Left 42 > Top 12 > Height 18 > Width 102

CommandButtonCancelar (Caption: CANCELAR) > Left 42 > Top 12 > Height 18 > Width 102

 

Código VBA:

Option Explicit

Dim largo&

Const mascara$ = "hh:mm:ss"

Private Sub CommandButtonCancelar_Click()

Unload UserForm1

End Sub

Private Sub UserForm_Activate()

LabelHora.Caption = mascara

TextBoxHora.SetFocus

Me.Left = 100

End Sub 'UserForm_Activate

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode <> vbFormCode Then Cancel = True

End Sub 'UserForm_QueryClose

Private Sub CommandButtonOK_Click()

Dim hora$, Vhora&, Vmin&, Vseg&

Vhora = Val(Left(Me.LabelHora, 2))

Vmin = Val(Mid(Me.LabelHora, 4, 2))

Vseg = Val(Mid(Me.LabelHora, 7, 2))

hora = Format((Vhora / 24) + (Vmin / 1440) + (Vseg / 86400), "hh:mm:ss")

Selection.TypeText Text:=hora

Unload UserForm1

End Sub

Private Sub LabelHora_Click()

Me.TextBoxHora.SetFocus

End Sub 'LabelHora_Click

Private Sub TextBoxHora_Change()

If largo > Len(TextBoxHora) Then

If Mid(LabelHora, largo, 1) = ":" Then

largo = largo - 2

TextBoxHora = Left(TextBoxHora, largo)

Exit Sub

End If

End If

largo = Len(TextBoxHora.Value)

Select Case largo

Case 1

If Val(TextBoxHora) > 2 Then

TextBoxHora.Value = "0" & Me.TextBoxHora.Value & ":"

largo = 3

Exit Sub

End If

largo = 1

Case 2

If Val(TextBoxHora) > 23 Then

TextBoxHora = "0" & (Val(TextBoxHora.Value) - 24) & ":"

Else

TextBoxHora = TextBoxHora.Value & ":"

End If

largo = 3

Case 4

If Val(Mid(TextBoxHora.Value, 4, 1)) > 5 Then

TextBoxHora.Value = Left(TextBoxHora.Value, 3) & "0" & Right(TextBoxHora.Value, 1) & ":"

largo = 6

GoTo Salir

End If

largo = 4

Case 5

TextBoxHora.Value = TextBoxHora.Value & ":"

largo = 6

Case 7

If Val(Mid(TextBoxHora.Value, 7, 1)) > 5 Then

TextBoxHora.Value = Left(TextBoxHora.Value, 6) & "0" & Right(TextBoxHora.Value, 1)

largo = 8

Exit Sub

End If

largo = 7

Case 8

largo = 8

Case Is > 8

TextBoxHora.Value = Left(TextBoxHora.Value, 8)

End Select

Salir:

LabelHora.Caption = TextBoxHora.Value & Mid(mascara, largo + 1)

End Sub

Pregunta lo que no sabes, recuérdalo para cuando te pregunten y ofrece tu ayuda (reconforta).

Mi sitio_web con ejemplos Excel.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 9670
Enlace directo a este mensaje Enviado: 02/Agosto/2017 a las 12:40
Oño .... Ouch

Esta es de las veces que te preguntas si el perro merece semejante collar. 

Vaya currada para ver una máscara en Word.

Antonio, un saludo.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 4992
Enlace directo a este mensaje Enviado: 02/Agosto/2017 a las 14:56
Un saludo Jesús.

Sin duda.Y seguro que «algo» he pasado por alto. Pero... claro como tú lo tienes en Access ya implementado... Cry


Editado: De todos modos, me gusta afrontar esos retos, como no necesito sacar rentabilidad... (los jubilados...Star)


Editado por AnSanVal - 02/Agosto/2017 a las 15:05
Pregunta lo que no sabes, recuérdalo para cuando te pregunten y ofrece tu ayuda (reconforta).

Mi sitio_web con ejemplos Excel.
Arriba
Antonio Pedro Ver desplegable
Asiduo
Asiduo


Unido: 13/Diciembre/2005
Estado: Sin conexión
Puntos: 236
Enlace directo a este mensaje Enviado: 10/Noviembre/2017 a las 22:29
En primer lugar perdón por el retraso en contestar, y en segundo muchas gracias por responder. Al final he desistido, pues no he dado con lo que deseaba. Se puede cerrar el hilo, y muchísimas gracias AnSanVal por tu tiempo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable