Hola
Declaro una variable array tabla con cinco posiciones para cinco números. Al estar fuera de cualquier rutina es una variable global a nivel de formulario y será conocida en todas las rutinas de este formulario
---------- Declaraciones ---------------
Dim TablaNumeros(5) as integer
Comienzo la rutina principal. En ella declaro las variables que necesito en esta rutina.
Valido valdrá true o false según que el número sea válido o no.
Contador valdrá entre 0 y cuatro y corresponde a cada uno de los cinco números que quiero obtener y meter en sus cinco labels: lblnumero(0), lblnumero(1), lblnumero(2), lblnumero(3), lblnumero(4)
Numero: número aleatorio calculado
sub Command1_Click()
Dim Contador as integer, Valido as boolean, Numero as integer
RellenarValores 'Llenar la tabla con valores -1
for Contador=0 to 4 'una vez para cada número
Numero=int(rnd*98)+1 'obtener número entre 1 y 99
Valido=comprobar(Numero) 'saber si es válido
if valido then
tabla(Contador)=Numero 'meter número en tabla
else
Contador=Contador-1 'volver a calcular número
endif
Next Contador
MostrarTabla 'mostrar los elementos de la tabla
EndSub
Aquí inicialmente relleno la tabla con valores -1 que son imposibles. Los números calculados van desde el 1 al 99 y por tanto no es posible tener un valor -1 calculado.
Sub RellenarValores()
dim Contador as integer
for Contador=0 to 4 'para cada elemento de la tabla
tabla[contador]=-1 'poner valor -1
next x
End Sub
Aquí muestro la tabla. Si miras el pantallazo correspondiente a este ejercicio verás que hay cinco label llamados LblNumeros. Son un array de controles. De esta forma el primer número debe ir en lblNumero(0) y el último en lblnumero(4)
Sub MostrarTabla
dim Contador as integer
for Contador=0 to 4 'para cada elemento de la tabla
lblnumero(contador)=tabla(contador) 'poner el número en pantalla
next x
Aquí compruebo si el número es válido o no. Para ello recorro la tabla y compruebo cada elemento con el número obtenido. Si ya está ahí es que el número que he calculado está repetido y por tanto debo calcular otro. En este caso la función devuelve false. En otro caso devuelve true
Function Comprobar(Num as integer)
dim Contador as integer
Comprobar=true 'inicialmente se supone que el número es bueno
For Contador=0 to 4 'para cada elemento de la tabla
if tabla(Contador)=numero then
comprobar=false 'el número es malo
exit function
endif
next Contador
End Function
Un saludo