BUCLE FOR – NEXT EN COMBOBOX

Hace unos días, leyendo el periódico y las noticias de política me fijé en los datos de las encuestas y estimaciones de voto que ofrecen los medios de comunicación. Mientras leía, pensaba en la posibilidad de utilizar Excel para realizar encuestas. Puede parecer algo sencillo, pero no lo es tanto si queréis automatizar la obtención de los datos de la encuesta.

Vamos a poner un ejemplo práctico, y vamos a imaginar que debemos hacer una encuesta sobre Excel 🙂 para ello utilizaré varias preguntas y un combobox con varias respuestas (a las que asignaremos un valor numérico).

Las preguntas serán:
– ¿Utilizas Excel en tu trabajo?
– ¿Te ayuda Excel en tu trabajo diario?
– ¿Te forman en tu empresa para el manejo de Excel?
– ¿Crees que es importante tener conocimientos sobre Excel?

Las respuestas serán las mismas para las tres preguntas:
– Mucho. (con un valor numérico de 3 puntos)
– Bastante. (con un valor numérico de 2 puntos)
– Poco. (con un valor numérico de 1 punto)
– Nada. (con un valor numérico de 0 puntos)

Así quedaría:

BLUCLE FOR-NEXT EN COMBOBOX

La idea es que cuando pulsemos el botón “VALORACIÓN”, nos muestre un resultado único fruto de la suma de los valores numéricos asignados los 4 combobox. Es decir, que si elegimos en todos los Combos “MUCHO”, el resultado será de 12 y si elegimos “NADA” (espero que no), será 0.

La hoja2 de archivo se utiliza para guardar las Respuestas a la encuesta, a partir de las cuales crearemos un nombre definido “ENCUESTA” para llenar los combos. También utilizaremos la hoja2 para almacenar las puntuaciones.

El código para realizar este trabajo puede hacerse de varias formas, precisamente con el objeto de evitar realizar un sinfín de sentencias “if”, la mejor alternativa que he considerado es realizar un bucle For – Next que vaya asignando en una hoja las puntuaciones de todos los combos según el valor de su respuesta. El código:

Sub Encuesta()
With Sheets(1)
'Declaramos variables
Dim i As Double
Dim Combo As MSForms.ComboBox
'Comenzamos el bucle indicando el número de combos (4 en este caso)
For i = 1 To 4
Set Combo = .Shapes("ComboBox" & i).OLEFormat.Object.Object
'Procedemos a realizar un condicional breve indicando que cuando se produzca la condición
'se asigne el valor del combo en la línea que proceda de la hoja2, en esta caso en las 4 primeras
'líneas, dado que aprovechamos la variable (i)
'MUCHO
If Combo.Value = "MUCHO" Then
Sheets(2).Cells(i, 2) = CDbl("3")
End If
'BASTANTE
If Combo.Value = "BASTANTE" Then
Sheets(2).Cells(i, 2) = CDbl("02")
End If
'POCO
If Combo.Value = "POCO" Then
Sheets(2).Cells(i, 2) = CDbl("1")
End If
'NADA
If Combo.Value = "NADA" Then
Sheets(2).Cells(i, 2) = CDbl("0,0")
End If
'VACÍO
If Combo.Value = Empty Then
Sheets(2).Cells(i, 2) = CDbl("0,0")
End If
Next
'Una vez finalizado el proceso, sumamos el rango con los números
.Cells(18, 6) = Application.Sum(Worksheets(2).Range("B1:B4").Value)
End With
End Sub

Después de aplicar la macro indicada, ya tenéis el resultado de la encuesta 🙂 y como hemos elegido MUCHO, tenemos una puntuación de 12 ¡Muy bien!

BLUCLE FOR-NEXT EN COMBOBOX_1

 

Descarga el archivo de ejemplo pulsando en: BUCLE FOR – NEXT EN COMBOBOX

 

Anuncios

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s