Con gusto te explico:
Con la instrucción For iniciamos un ciclo
For
Con For Each, indicamos que ejecute un ciclo para cada dato
For Each
Con In Me. Controls, seleccionas todos los controles que tengas en tu formulario, ya sean textbox, checkbox, combox, label, etc, todos los controles que tengas en el Form
In Me. Controls
Con ctrl In Me. Controls, le indicamos que le pase a la variable ctrl el objeto del control, es decir, que si el primer control del Form es un textbox1, entonces en ctrl traemos el objeto del textbox1, con decir que traemos el objeto del textbox1, significa que en ctrl traigo el nombre “TextBox1” y traigo el valor del textbox (entre otras cosas)
Entonces la instrucción completa, realiza un ciclo para cada uno de los controles contenidos en el Form
For Each ctrl In Me.Controls
Con la siguiente instrucción preguntamos por el tipo del control, en este caso, preguntamos si el TypeName(ctrl) es igual a un “OptionButton”, también podemos preguntar si es un TextBox” o un “ComboBox” (se tienen que respetar las mayúsculas y ls minúsculas)
If TypeName(ctrl) = "OptionButton" Then
Con lo siguiente solamente hago un acumulado del número de opciones que existen, cada vez que uno de los controles es “OptionButton” sumo 1 al acumulado
opciones = opciones + 1
El Select Case, es como una pregunta, se pregunta por un valor, en este caso se pregunta por el nombre del ctrl
Select Case ctrl.Name
Como en ctrl. Name traemos el nombre del “OptionButton”, recordarás que asignamos el objeto del “OptionButton” a la variable ctrl, entonces, preguntamos si el nombre se llama “ob1” ó “ob3” ó “ob5”, en la instrucción se puede preguntar por varios valores, separdos por coma (,).
Case "ob1", "ob3", "ob5"
Entonces si el “OptionButton” es cualquiera de los valores anteriores, ahora pregunta, por el valor del “OptionButton”si está seleccionado o no está seleccionado, si está seleccionado, entonces es True,
If ctrl.Value = True Then
Si el ctrl.Value está seleccionado, entonces acumulo en la variable valor un 100
valor = valor + 100
End If
Termina la selección
End Select
End If
Repite el ciclo
Next
Al final de los ciclos, tenemos en la variable valor la cantidad de preguntas seleccionadas y en la variable opciones la cantidad de “OptionButton” que existen en el formulario.
Como sé que hay 2 “OptionButton” por cada pregunta, entonces divido el total de opciones entre 2 y con eso me da el número de preguntas, ejemplo si hay 8 “OptionButton” y divido 8 / 2 = 4, entonces tengo 4 preguntas.
Por último divido el valor / preguntas y me da el promedio.