¿Qué controles Activex puedo usar para hacer una encuesta en una ventana que cambie al dar click al botón siguiente?

Tengo una macro donde tengo preguntas con opciones en botones Activex que al dar click en un botón llamado Evaluar me da la suma de puntos de acuerdo a las 2 respuesta elegidas.

Quiero que esas preguntas vengan en una ventana en donde el encuestado no puedo ver todas las preguntas y al dar a un botón siguiente los labels del botón activex y la pregunta cambien.

Quieren que lo programe en excel porque el Google Formulario no puede generar una gráfica final de los resultados de la puntuación.

¿Alguna sugerencia?

2 Respuestas

Respuesta
2

Empieza diseñando tu formulario:

En el ejemplo has puesto 5 botones de opción y dos botones, bien, estos controles tienen que ser activex, no controles de formulario.

Para que los de la derecha funcionen como un grupo y los de la izquierda como otro les tienes que asignar dos groupName distintos en la ventana de propiedades de cada optionButton. P.E. a los de la izquierda le asignas groupName = Iz y los otros Da.

Ahora puedes cambiar el texto de cada control cuantas veces quieras introduciendo en tu rutina optionButton1.caption = "Eltextoquequieras"

Lo mismo en los botones : commandbutton1="MiTextoboton"

Yo haría una lista en otra hoja oculta con las diferentes preguntas y al ir validando cada página ir cargando las siguientes. Utilizando una instruccion Select  Case.

Respuesta
1

De Excel no tengo ni puñetera idea, pero por si te puede ayudar( en Access). Tengo una tabla Alumnos que tendría los datos de los alumnos

, otra tabla llamada Preguntas y otra llamada Test donde va a recoger las preguntas que" se hagan"

Si tengo un formulario con subformulario, donde te dejo a la vista los cuadros de texto Idpregunta y Correcta( que estarían ocultos) y los registros del subformulario para que veas como al pulsar Preguntas al azar, ponga otra pregunta aleatoriamente.

La respuesta correcta es la B. Si por ejemplo pulso el cuadro a la derecha de la respuesta A

y al aceptar

Me pone en los cuadros de texto del formulario las preguntas respondidas por cada alumno, los aciertos y los fallos, que se guardan en la tabla, en el registro de ese alumno. También en la tabla Test por si hiciera más de uno.

Si pulsara el botón Preguntas al azar

Se va a una pregunta aleatoria( puedes verlo en los botones de desplazamiento). Vuelvo a pulsarlo

Y como tienes el número de preguntas, aciertos y fallos puedes hacer los gráficos que quieras.

El código del evento Al hacer clic del botón Preguntas al azar es

Private Sub Comando15_Click()
Dim numRegs As Long
numRegs = Me.Recordset.RecordCount
Randomize
DoCmd.GoToRecord , , acGoTo, Int(numRegs * Rnd + 1)
End Sub

Y el del evento Al recibir el enfoque del cuadro de texto, llamado ResA, que está a la derecha de la respuesta A es

Private Sub ResA_GotFocus()
DoCmd.SetWarnings False
If IsNull([ResA]) Or ResA = "" Then
ResA = "A"
If ResA = Correcta Then
DoCmd.RunSQL "insert into test(IdAlumno,Idpregunta,respuesta,acertada)values('" & Me.Parent!IdAlumno & "',idpregunta,""A"",""Si"")"
MsgBox "Enhorabuena, ha acertado", vbOKOnly + vbExclamation, "De carambola, pero ha acertado"
Me.Parent!NumPreguntas = Nz(Me.Parent!NumPreguntas) + 1
Me.Parent!Aciertos = Nz(Me.Parent!Aciertos) + 1
Else
DoCmd.RunSQL "insert into test(IdAlumno,Idpregunta,respuesta,acertada)values('" & Me.Parent!IdAlumno & "',idpregunta,""A"",""No"")"
MsgBox "Va a ser que no", vbOKOnly + vbExclamation, "Otra vez será"
Me.Parent!NumPreguntas = Nz(Me.Parent!NumPreguntas) + 1
Me.Parent!Fallos = Nz(Me.Parent!Fallos) + 1
End If
End If
End Sub

este código se podría acortar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas