Visual Basic - Error "5" en tiempo de ejecución

Life is soft - evento anual de software empresarial
 
Vista:

Error "5" en tiempo de ejecución

Publicado por JuanCa (4 intervenciones) el 15/08/2019 23:53:20
Buenas, el siguiente código (corto) en Visual Basic (Excel) es la implementación en doble ciclos para imprimir 1000 (experimentos) intervalos de confianza (con 22 observaciones cada experimento) Sin embargo, no logro compilar por un error '5' en el tiempo de ejecución. Agradezco, si logran hallar con el fallo en el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Sub IntervaloConfianza()
 
Dim i As Single
Dim m As Integer
Dim t As Integer
Dim theta As Double
Dim z As Double
Dim fila As Integer
 
t = 0
fila = 2
z = Application.WorksheetFunction.NormSInv(0.05)
 
Cells(1, 1) = "Int. Izquierdo"
Cells(1, 2) = "Int. Derecho"
 
Do While fila <= 1001
 
    m = 1
 
    Do While m <= 22
 
        i = Rnd()
 
        If i <= 0.7 Then
 
            t = t + 1
 
        End If
 
        m = m + 1
 
    Loop
 
    theta = t / 2
 
    Cells(fila, 1) = theta + z * Math.Sqr((theta * (1 - theta)) / 22)
    Cells(fila, 2) = theta - z * Math.Sqr((theta * (1 - theta)) / 22)
 
    fila = fila + 1
 
Loop
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error "5" en tiempo de ejecución

Publicado por JuanCa (4 intervenciones) el 16/08/2019 00:22:24
El problema lo he notado en la línea, donde se inicializa la variable m=1. Note que en el ciclo de a dentro, el m varía de 1 a 22. Mientras que el ciclo de afuera, se trata de inicializar en m=1, para hacer otra vez el ciclo de adentro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.....
 
Do While fila <= 1001
 
m = 1
 
Do While m <= 22
 
i = Rnd()
 
If i <= 0.7 Then
 
t = t + 1
 
End If
 
m = m + 1
 
Loop
 
....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error '5' en tiempo de ejecución

Publicado por JuanCa (4 intervenciones) el 16/08/2019 05:47:40
Perdón, lograste ver algún error en el código?, Andres Leonardo.

Al momento, no me corre el código.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error '5' en tiempo de ejecución

Publicado por Antoni Masana (558 intervenciones) el 16/08/2019 06:42:02
Es prácticamente imposible que de un error 5 en la línea "M = 1" estando definido M como integer.

He probado el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub IntervaloConfianza()
    Dim i As Single
    Dim m As Integer
    Dim t As Integer
    Dim theta As Double
    Dim z As Double
    Dim fila As Integer
    t = 0
    fila = 2
    z = Application.WorksheetFunction.NormSInv(0.05)
    Cells(1, 1) = "Int. Izquierdo"
    Cells(1, 2) = "Int. Derecho"
    Do While fila <= 1001
        m = 1
        Do While m <= 22
            i = Rnd()
            If i <= 0.7 Then
                t = t + 1
            End If
            m = m + 1
        Loop
        theta = t / 2
        Cells(fila, 1) = theta + z * Math.Sqr((theta * (1 - theta)) / 22)   '<-- Error 5
        Cells(fila, 2) = theta - z * Math.Sqr((theta * (1 - theta)) / 22)
        fila = fila + 1
    Loop
End Sub

Y da un error 5 cuando intenta calcular la raíz cuadrada de un número negativo. ¿Solución? Revisar el calculo porque esta mál.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Error '5' en tiempo de ejecución

Publicado por JuanCa (4 intervenciones) el 16/08/2019 23:53:41
Muchas gracias, Antoni Masana.

En efecto, el error estaba en el cálculo de raíz cuadrada (con argumento negativo).

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar