Error en tiempo de ejecución

Estoy realizando un programa que calcula estadísticas básicas (media aritmética, mediana, varianza, etc...)
El programa tiene la siguiente estructura:
Una pantalla para colocar los datos
Un botón llamado calculo
Un botón llamado salida, que te lleva a otra pantalla donde muestra los resultados.
Al principio el programa corría perfectamente, luego le coloque un arreglo para que el programa ordenada los datos de menor a mayor ya que, dentro de los cálculos a realizar esta el calculo de la mediana. Ahora cuando clickeo en el botón calculo me genera el siguiente error:
"Error '9' en tiempo de ejecución: El subíndice esta fuera del intervalo"
Cuando le doy a depurar, resalta una parte del código en amarillo
Este es el código:
Private Sub Cmd_Calculo_Click()
sw2 = 1
I = 0: SUMX1 = 0: SUMX2 = 0
For I = 1 To N
SUMX1 = SUM1X + X(I)
SUMX2 = SUMX2 + (X(I) * X(I))
Next I
Mx = (SUMX1 / N)
Vx = (SUMX2 / N) - (Mx * Mx)
Dtx = Sqr(Vx)
If Mx <> 0 Then
Cvx = Dtx / Mx
Else
MsgBox "Indeterminacion, el divisor debe ser distinto de cero"
End If
I = 0
Do
I = I + 1
Datos(I) = X(I)
Loop Until I = N
I = 0
Do
I = I + 1
J = I
Do
I = I + 1
If X(I) >= X(J) Then -----> Esto es lo que resalta en amarillo
Vt2 = X(J)
X(J) = X(I)
X(I) = Vt2
End If
Loop Until I = N
Loop Until I = N - 1
Min_X = X(1): Max_X = X(N): Ran_X = X(N) - X(1)
K1 = N / 2: K2 = Int(K1)
If K1 = K2 Then
Md = (X(K2) + X(K2 + K1) / 2)
Else
Md = X(K2)
End If
Cmd_Captura.Enabled = False
Cmd_Calculo.Enabled = False
Cmd_Salida.Enabled = True
End Sub
Las variables son de tipo public y están declaradas en un modulo aparte.

1 Respuesta

Respuesta
1
"El sub indice esta fuera del intervalo"
Este error básicamente ocurre en los bucles ( for do... etc) y se da por que estas tratando de accesar a un indice que no existe. En este caso tu recorres los valores de la matriz Datos()
Debes saber que el indice de las matriz parte en cero a menos claro que hayas declarado explícitamente que parta desde uno ( option base 1).
Ejecuta el programa mediante pausa en esa linea y haz seguimiento con F8 y verifica el valor de i
Por ejemplo
Si tu matriz tiene 10 datos entonces el contador i debe pasar desde cero hasta 9 ya que en la matriz el décimo valor se correspon de al indice 9.
valor1 = indice 0
valor2= indice 1
Etc.
En resumen verifica el valor de los indices (i) (j) en uno de ellos te estas pasando
Éxito!.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas