Está en la página 1de 2

MARCO DE OPCIONES QUE NOS ACTIVA CAMPOS (2)1

Nuestro amigo Antonio Salvá me ha propuesto una


simplificación del código para el ejemplo “Marco de opciones
que nos activa campos”. Si no sabéis a qué ejemplo me
refiero tenéis aquí el pdf y aquí la BD de ejemplo.

Lo cierto es que he encontrado esta simplificación harto


interesante, máxime cuando os permitirá conocer una
función de VBA y ver su funcionamiento en un ejemplo
práctico. Esa función es la función Choose().

En vez de empezar el ejemplo de cero voy a dar por sentado que tenemos el ejemplo inicial
que os comentaba en el primer párrafo totalmente hecho, y sobre él aplicaremos la
modificación del código (es lo único que debemos modificar).

Así pues, vayamos...

MODIFICANDO NUESTRO CÓDIGO


Vamos a situar nuestro formulario FDatos en vista diseño. A continuación seleccionamos el
marco de opciones mrcCurso y sacamos sus propiedades → Pestaña Eventos, y editamos el
código asociado al evento “Después de actualizar”.

Como vemos, en el ejemplo original utilizábamos un bucle SELECT...END SELECT para evaluar
las posibilidades.

El código que nos propone Antonio Salvá es el siguiente (he añadido los comentarios para que
se entienda mejor el código):


Private Sub mrcCurso_AfterUpdate()
'Declaramos las variables
Dim vCurso As Integer
Dim miSql As String
'Cogemos el valor marcado en el marco de opciones
vCurso = Me.mrcCurso.Value
With Me
'Asignamos un valor booleano (True/False) a la propiedad "Visible"
'de los cuadros de texto que nos indican los niveles de los diferentes
'cursos en función de la opción seleccionada (que nos viene dada por la
'variable vCurso
.NivelExcel.Visible = vCurso = 1
.NivelAccess.Visible = vCurso = 2
.NivelWord.Visible = vCurso = 3
End With
'Nos creamos la SQL que asignaremos como origen de la fila del combo Prof
miSql = "SELECT TProfes.NomProf FROM TProfes WHERE TProfes.Assig='" & _
Choose(vCurso, "Excel", "Access", "Word") & "'"
'Asignamos el origen de la fila del combo
Me.Prof.RowSource = miSql
'Forzamos la lectura de los nuevos datos del combo
Me.Prof.Requery
End Sub

Un par de comentarios:

1 La BD de ejemplo os la podéis bajar aquí.

1
Visítame en http://siliconproject.com.ar/neckkito/
 Fijaos que para asignar el valor de la propiedad “Visible” utilizamos la “veracidad o no” de
una igualdad.

 Fijaos que para crear el filtro de la SQL utilizamos la


función Choose(). La sintaxis de esta función sería:

Choose (valorObtenido, [Elección1], [Elección2], … ,


[ElecciónN])

En este caso, el valorObtenido nos viene dado por la


variable vCurso, y las diferentes elecciones son las que
hemos escrito como los nombres de los cursos.

PARA FINALIZAR EL EJEMPLO


Como podéis ver se trata de una simplificación interesantísima del código original y que nos da
la misma funcionalidad.

Quiero agradecer a Antonio Salvá que me haya sugerido esta solución alternativa para el
ejemplo y que me haya permitido compartirla con todos vosotros.

Y eso es todo. Espero que este ejemplo os sea útil. Un saludo, y...

¡Suerte!

2
Visítame en http://siliconproject.com.ar/neckkito/

También podría gustarte