Activar un campo dependiendo de una condición

Quisiera saber como puedo hacer que un campo se active después de seleccionar en otro campo una opción, es decir explico, en un campo tengo un desplegable con varias opciones y una de esas opciones dice "otra", al elegir la opción "otra" haga que se active un campo del formulario en donde tengo que especificar cual es la otra opción.

1 respuesta

Respuesta
1
Supongamos que tu desplegable se llame 'cuadroOpciones' en el evento 'al cambiar' puedes ponerle lo siguiente:
Private Sub cuadroOpciones_Change()
    Me.textBoxOtroCampo.Enabled = (UCase$(Me.cuadroOpciones) = "OTRA")
End Sub
Si tu cuadro contiene el valor "otra", pondrá activo el campo 'textBoxOtroCampo' y si no lo desactivará.
Hola, seguí tus pasos que me indicas pero en el momento en que seleeciono "otra" me abre el editor marcándome un error, no se que es lo que estoy haciendo mal, lo único que cambie fue el nombre de otrocampo, por el nombre de mi texbox que quiero que se active dependiendo de la sellecion "otra" que se llama "especifique otra" y después de mi. También escribí el nombre de mi tex box "especifique otra", que es el que quiero se active cuando seleccione "otra"
esto fue hice;
Private Sub especifiqueotra_Change()
    Me.textBoxespecifiqueotra.Enabled = (UCase$(Me.especifiqueotra) = "OTRA")
End Sub
Gracias por la ayuda
Disculpa el retraso en la respuesta pero me estado atendiendo unos problemas personales.
Supongo que el error que te da es porque no existe el control con el nombre que has escrito.
Una buena costumbre a la hora de programar en VB es obligarse a uno mismo a que todas las variables y nombres de controles estén bien definidos. Para ello, al principio del código de los módulos, formularios e informes, interesa incluir una línea que ponga "Option Explicit" (sin las comillas).
Esta línea, como ya te he puesto, te obliga a que todo esté definido. Para comprobar que todo esté bien, debes elegir la opción "Compilar ..." dentro del menú "Depuración". Si algún control o variable no estuviera definido, tendrías que hacerlo.
Cuando todo lo que llevas escrito está correcto (no tiene errores de compilación), el propio Visual Basic te va ayudando a escribir parte del código. Por ejemplo, cuando empiezas a escribir "Me.tex" te presenta todos los controles cuyo nombre comienza por 'tex'.
Te cuento todo esto porque el error que te está dando es, casi seguro, porque estás poniendo algún nombre de campo que no es correcto. Si te acostumbras a poner el "Option Explicit" y compilar cada cierto tiempo, localizarías este tipo de errores con bastante facilidad.
Una vez echada la charla, espero que lo tomes en plan constructivo, buscamos la solución.
1.- Comprueba si al escribir "me.textboxespe" el VB te presenta el nombre completo del control y que sea exactamente el que tienes escrito.
2.- Comprueba que también te aparece esa ayuda cuando escribes "me.especifi" y que "Me.especifiqueotra" está correctamente escrito.
3.- Comprueba que está bien activado el evento "Al Cambiar" del control "me.especifiqueotra" (en la propiedad 'Al Cambiar' tiene que poner 'procedimiento de evento').
4.- Comprueba la propiedad 'nombre' de los controles para asegurarte que están correctamente escritos.
Espero que se corrija el error. Si no, envíame una copia de la base de datos comprimida a mi correo: [email protected]
Hola, gracias por la explicación, ya pude hacer que mi campo se active dependiendo de que en mi desplegado tenga mi opción "otro" y me lo h¡zo como yo esperaba, pero ahora queda un problemita, resulta que cuando salgo de la base y vuelvo a entrar ya no lo hace, se queda desactivado aunque tenga mi registro seleecionado la opción "otro" y después de volver a capturar ya lo vuelve a realizar, ¿cómo puedo hacer para que ya no suceda esto? Y aprovechando otras preguntas más, Se puede hacer esto de condicionar un campo que se active en otros campos o solo se puede realizar una sola ves, ¿por qué quise hacer lo mismo para otro campo con opción si/no y que dependiendo si era "si" se activara otro campo y ya no me lo hizo? Y también como puedo hacer para que cada vez que abra mi formulario, ¿se vaya directo al último registro capturado? Gracias por la ayuda
Para que se actualicen los valores al abrir el formulario tienes que activar/desactivar los campos en el evento 'Al cargar' del formulario (en las propiedades).
Simplemente tendrías que poner un código similar al que has puesto 'Al Cambiar' tus controles o bien hacer una llamada a esos procedimientos. Sería algo así:
Private Sub Form_Load()
    especifiqueXXXX_Change
    especifiqueYYYY_Change
    especifiqueotra_Change
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas