Tengo un problema con la visualización de un formato de horas en VBA de
excel 2000. Mi problema reside en que un formulario tiene un Textbox
relacionado con por ejemplo la celda b5 de la hoja 2. Este formulario se abre
al apretar un boton en la hoja1. En el momento de iniciarse el textbox me
tiene que dar el valor de esta celda que es de formato HORAS 00:00:00
(HH:MM:SS), pero por más que lo he intentado lo único que me muestra es un
número con decimales.
Al aplicar el evento de Change a este textbox he conseguido que me lo
visualice bien, pero al cambiar otro textbox, éste vuelve al formato erróneo.
No se como hacer que en todo momento sea un formato de horas.
¿Alguien me puede ayudar?
Gracias por anticipado
Private Sub UserForm_Initialize()
Me.TextBox1 = [Hoja2!B5].Text
End Sub
Si en la propiedad ControlSource del control tienes la celda, tendrás que borrarla.
Si tu idea es editar el cuadro de texto para volcar la hora a la celda, tendrás que usar algo parecido a:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dtHora As Date
On Error Resume Next
dtHora = TimeValue(Me.TextBox1)
On Error GoTo 0
If dtHora = 0 Then
MsgBox "La hora introducida en el cuadro de texto no es correcta." & vbNewLine & "Por favor, inténtelo de nuevo."
Cancel = True
Else
[Hoja2!B5] = dtHora
End If
End Sub
Un saludo.
Fernando Arroyo
MS MVP - Excel
"BADDOG" <BAD...@discussions.microsoft.com> escribió en el mensaje news:81C7BD48-2BF8-462B...@microsoft.com...
Con la contestación intuyo que lo que yo quería y el tener Controlsource
puesto en la celda [Hoja2!B5], debían dar problemas.
Con tu contestación ya me has resuelto el problema. Solo necesito saber si
lo que pienso es correcto. (Curiosidad)
En realidad la propiedad ControlSource sí funcionaba correctamente: se limitaba a coger el valor de la celda y ponerlo tal cual en el cuadro de texto, pero hay que tener en cuenta que Excel almacena las horas como la parte decimal de un número (la parte entera es el día). Por eso tú veías en el cuadro de texto un número con decimales.
Si fuera posible establecer un formato para los cuadros de texto (desgraciadamente, no es posible), la hora hubiera aparecido bien con tan sólo establecer dicho formato a uno de hora, y hubieras podido usar la propiedad ControlSource.