VBA Formulario Captura de datos

Estoy haciendo un formulario a la MALA 'no se mucho de programación'

El trabajo de formulario es captar quien hace una tarea y en que fecha + saber si entrego el documento

Tengo un tema

En mi formulario tengo muchos Textbox mas de 30

Unos llevan nombres y otros fechas

Me gustaría lograr que los campos de fecha estén Bloqueados hasta q se digite el nombre por lado y por nivel

Aquí la imagen

Nivel 000

Lado A

Se escribe el Nombre (Luis) entrego el documento (- SI-) se habilita el campo de fecha (26-dic-17)

(Luis) (- SI-) (26-dic-17)

La fecha no puede ser mayor al día de hoy

En el campo de fecha que no se pueda escribir otra cosa

Disculpen si no me logro explicar

Agradezco de antemano las ayudas que nos prestan a todos aquí

1 respuesta

Respuesta

Mi primer consejo sería que tengas un "TextBox" para el nombre, un "ComboBox" para el "Nivel" y uno para el "Lado" (esos dos últimos cada uno con todas las opciones) y un "TextBox" para la fecha. Todos los datos irían a una sola hoja.

¿Qué opinas?

If TextBox3 > Date Then
Msgbox "La fecha no puede ser mayor a hoy"
Exit Sub
End if
If TextBox4 = "Sí" Then
TextBox3.Enabled = False
End If

Abraham Valencia

hola

muchísimas gracias por el tiempo

ahora tu idea es genial

tengo muchas cosas q me hubiese gustado hacer pero el no saber mucho no me deja avanzar

me toco mirar miles de ejemplos programados y ver como se movían

analizar y le daba no lograba ciertos cambios a mi gusto

esta... que esta basada en una tabla

intente ponerle unos check para saber si me entregaban documentos o no sin tener que teclear

quería una lista deplegable para los nombres de las personas que siempre serán las mismas

para avanzar de nivel tenia que estar completo el nivel anterior y así muchas cosas

hasta ligar imágenes por nivel

bueno

If TextBox3 > Date Then
Msgbox "La fecha no puede ser mayor a hoy"
Exit Sub
End if

aquí estamos bien no superar la fecha es lo que quiero

pero escribo hasta letras

o la fecha incompleta y no sucede nada

y debe estar deshabilitado el campo hasta q se escriba algo en el anterior

trate con algo así

If frmModificar.TextBox5 = Empty Then
MsgBox "INTRODUCE LA FECHA DE 000 lado  A", vbInformation
Exit Sub
End If
validarfecha = IsDate(frmModificar.TextBox5.Value)
If validarfecha = False Then
MsgBox "DEBES INTRODUCIR EL SIGUIENTE FORMATO PARA LA FECHA 00/00/0000", vbCritical
Exit Sub
End If
'HACEMOS UN CONTROL DE QUE LA FECHA NUNCA SEA MAYOR QUE EL DÍA DE HOY
hoy = Date
If (frmModificar.TextBox5.Value) > hoy Then
MsgBox "LA FECHA QUE ESTÁS INTRODUCIENDO ES MAYOR QUE EL DÍA DE HOY, ASEGÚRATE QUE LOS DATOS INTRODUCIDOS SON CORRECTOS", vbCritical
Exit Sub
End If

cuando le doy guardar no ejecuta la instrucción

Otra vez:

Hay algunas alternativas para lo de las fechas, una es usar algún control como el "Calendar" o el "DTPicker" pero a sabiendas de las incompatibilidades que van mostrando y que pueden traer problemas si distribuyes en otras PCs tu aplicación.

Si la alternativa es usar un "TextBox", antes que nada te propongo usar un "viejo truco". Coloca 10 en la propiedad "MaxLenght" del "TextBox", luego usaremos lo siguiente en su evento "Change":

Private Sub TextBox1_Change()
Dim LargoFecha  As Integer
Let LargoFecha = Len(TextBox1)
Select Case LargoFecha
    Case 2
        TextBox1.Value = TextBox1.Value & "/"
    Case 5
        TextBox1.Value = TextBox1.Value & "/"
End Select
End Sub

Luego, para asegurar que han escrito sí o sí todos los caracteres, un "IF" así podría ayudar:

IF Len( TextBox1) < 12 Then

Msgbox "Complete la fecha"

Una cosa así. Prueba y comenta.

Abraham Valencia

PD: OJO, lo de que la fecha sea válida, o no, es otro cantar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas