Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

VBA: Las formas a modo de evaluación

Hoy trabajaremos con los objetos Shapes para dar una posible solución a un lector que preguntaba:
[...]estoy haciendo un pequeño juego de preguntas para mi hijo pequeño, y a la hora de responder afirmativamente a una cuestión desearía que saliera un signo o dibujo con un smile verde sonriente y en caso negativo que saliera un smile rojo triste. No soy capaz de vincular esas imágenes con la respuesta, sólo consigo que me ponga correcto o incorrecto[...]


Lo primero consiste en añadir unas imágenes o formas en mi caso con el aspecto deseado...
Para nuestro ejemplo dispondremos de cuatro preguntas a responder, por lo que añadimos cuatro muñecos verdes y cuatro rojos superpuestos dos a dos por cada pregunta...
A estas formas las he llamado:
'bien1' 'mal1'
'bien2' 'mal2'
'bien3' 'mal3'
'bien4' 'mal4'



Por otra parte, para controlar que las respuestas dadas en las celdas C17,C20,C23,C26 son correctas, las cruzamos con las respuestas correctas de control en G17,G20,G23,G26, cosa que comprobamos en H17,H20,H23,H26 con una simple prueba lógica:
=C17=G17



Tenemos todo lo necesario:
1-las ocho formas
2-las preguntas planteadas
3-y su corrección

solo nos falta controlar las formas (rojo o verde) según corresponda, lo que haremos con un evento 'Worksheet_Change' de hoja.


Así pues, insertamos el siguiente evento 'Worksheet_Change' en la ventana de código de la hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
'comenzamos controlando qué celdas están supervisadas
If Not Intersect(Target, Range("C17,C20,C23,C26")) Is Nothing Then
'asociamos número de filas a preguntas
Select Case Target.Row
Case Is = 17: pregunta = 1
Case Is = 20: pregunta = 2
Case Is = 23: pregunta = 3
Case Is = 26: pregunta = 4
End Select
'comprobamos se ha rellenado con algo las celdas de respuesta
'si se ha completado con algo se evalua
If Target.Value "" Then
'se verfica con la celda control de la col H
'si es VERDADERO se ha acertado
If Cells(Target.Row, "H") = True Then
'y entonces sacamos el muñeco verde y ocultamos el rojo
ActiveSheet.Shapes("bien" & pregunta).Visible = msoTrue
ActiveSheet.Shapes("mal" & pregunta).Visible = msoFalse
Else
'en caso contrario sacamos el muñeco rojo y ocultamos el verde
ActiveSheet.Shapes("bien" & pregunta).Visible = msoFalse
ActiveSheet.Shapes("mal" & pregunta).Visible = msoTrue
End If
Else
'si no se ha rellenado nada se ocultan ambas figuras
ActiveSheet.Shapes("bien" & pregunta).Visible = msoFalse
ActiveSheet.Shapes("mal" & pregunta).Visible = msoFalse
End If
End If

End Sub


Y podemos probar el cuestionario y comprobar como funciona según lo esperado.


This post first appeared on EXCEL FORO: EJERCICIOS, EJEMPLOS, SOLUCIONES, DUDA, please read the originial post: here

Share the post

VBA: Las formas a modo de evaluación

×

Subscribe to Excel Foro: Ejercicios, Ejemplos, Soluciones, Duda

Get updates delivered right to your inbox!

Thank you for your subscription

×