2011-05-03 49 views
5

Tengo un cuadro de diálogo que aparece cuando el usuario hace clic en un botón de macro. Este cuadro de diálogo está lleno (la fecha, el correo electrónico, el productor, el sitio web, etc. están completos) y todo lo que el usuario debe hacer es ingresar su nombre. El problema es que la fecha ingresada es estática, por lo que si ingresé "3/3/11" permanecerá así hasta que alguien la cambie.VBA Excel Proporcionar la fecha actual en el cuadro de texto

Me preguntaba si había alguna forma de que ese cuadro de texto muestre siempre la fecha actual (a menos que el usuario decida cambiarla por el motivo que sea). He intentado poner cosas diferentes en la sección "Valor" del cuadro de texto (como "getDate()" y "= Date()") pero hasta ahora no han tenido éxito.

Gracias,

Jesse Smothermon

Respuesta

11

Utilice el formulario Inicializar caso, por ejemplo:

Private Sub UserForm_Initialize() 
    TextBox1.Value = Format(Date, "mm/dd/yyyy") 
End Sub 
+0

Intenté eso inicialmente antes de hacer esta pregunta. Creo que estoy colocando ese código en el área incorrecta. Esto es lo que sucede: el usuario hace clic en un botón de macro, el botón abre un formulario de usuario, el usuario ingresa lo que sea y hace clic en el botón "ejecutar". ¿Colocaré este código antes de que se abra el formulario de usuario? Si es así, aparece un error de "424" en tiempo de ejecución. Objeto requerido. Gracias –

+0

Haga clic derecho en el diseñador de formularios y seleccione Ver código.Pon el código de arriba allí. Cambie 'TextBox1' a lo que se llame su cuadro de texto. – Graham

+2

frijoles fríos, funcionó. En una nota al margen cuando fui a "Ver código" automáticamente fue a "UserForm_Click()", así que simplemente lo cambié a "UserForm_Activate()". Gracias –

1

La manera más fácil de hacer esto es poner la función de fecha que desea utilizar en una celda, y el enlace a la célula a partir de la caja de texto con la propiedad LinkedCell.

De VBA puede probar usando:

textbox.Value = Format(Date(),"mm/dd/yy") 
+0

¿Quiere decir, esconderlo detrás del botón de macro? Y en este momento siento que todo lo que se ingrese en la sección "Valor" del cuadro de texto se trata como una cadena literal, investigaré LinkedCell, gracias –

0

estaban cerca. Añadir este código en el controlador UserForm_Initialize() evento:

tbxDate.Value = Date 
+0

¿Dónde colocarías el código? El formulario de usuario simplemente aparece, pero no hay lugar para asignar valores. Solo son los valores preasignados que ingresé previamente y lo que el usuario ingrese. Tampoco quiero cambiar el valor una vez que se hayan ingresado todos los valores en caso de que el usuario no desee eso. Gracias por la ayuda –

+0

En el explorador de proyectos, haga clic derecho en el formulario y abra el código, luego agregue el código en el manejador de eventos UserForm_Initialize() – Arnoldiusss

1

Establecer el valor de código en mostrar la forma, no en el diseño-timeProperties para el texto caja.

Private Sub UserForm_Activate() 
    Me.txtDate.Value = Format(Date, "mm/dd/yy") 
End Sub 
0

Aquí hay una versión más simple. En la celda que desea la fecha para aparecer sólo tiene que escribir

=Today()  

formato a la celda con el formato de fecha que desee y Bob es tu tío. :)

+1

Esto funcionaría como una fórmula en una celda, pero la pregunta era para un cuadro de texto, por lo que debe ser una función de VBA. – assylias

+0

Además, = today() es una función volátil, lo que significa que cualquier elemento de la cadena de recálculo que haga referencia a esa celda también se vuelve volátil. ¡Evitar! – Andrew

0

En realidad, es menos complicado de lo que parece.

Sub 
    today_1() 
    ActiveCell.FormulaR1C1 = "=TODAY()" 
    ActiveCell.Value = Date 
End Sub 
+0

Esto no responde la pregunta original. Además, está configurando la fórmula de celda y luego sobrescribiéndola en el siguiente paso. – arcadeprecinct

0

Sé que esto es muy antiguo puesto, pero yo he utilizado esto antes

Siempre se puede ajustar para activar. Ahora el método es otra forma. Sólo una opción

Private Sub UserForm_Initialize() 

Textbox1.Text = Format(Now(), "mmddyyyhhmmss") 

End Sub