Hola , Convertí un programa de procesamiento térmico de QBasic a Visual Basic, el programa lee dos archivos externos .DAT que los llama desde código, arroja resultados erroneos.no se que estoy haciendo mal declare variables para hacerlo funcionar con visual basic.

Arroja un "error 11 Division por cero", porque no toma valores en el divisor no se llenan las variables, no se que converti mal en este punto se me complicó.
Los anteriores los resultados que me devuelve el programa están bien. estas líneas empieza el fallo :

1545 G9 = (G(L, 0)) - G(L - 1, 0) / (G(L, K) - G(L - 1, K))
1550 FU = (G(L - 1, 0)) + G9 * (G5 - G(L - 1, K))

igualmente les paso el código completo, este código lo corro en un archivo excel y lo pruebo en la ventana inmediato para evaluar los resultados del código
lo correcto sería así: en la imagen estan todos los resultados que deberia obtener solo me faltan estos dos:

fh/u:6.926389
F(121.1111,10)=5.10404 min
perdon pero la explicacion es larga!!!! un Saludo y Muchas Gracias


Aca pego el codigo:

Sub calculostiempodeprocesos_F02()

Dim R, B7 As String
Dim N1 As Single
Dim R3 As Single
Dim R1 As Single
Dim R4 As Single
Dim R2 As Single
Dim L3 As Single
Dim L1 As Single
Dim L2 As Single
Dim L4 As Single
Dim A(0, 4) As Single
Dim X, Y As Single
Dim z, BI, B8 As String
Dim c, W As Integer
Dim i, h As Single
Dim A2, A3 As Single
Dim W2 As Single
Dim BE As Single
Dim F3 As Single
Dim P As Single
Dim F4 As Single
Dim U As Single
Dim gr As Single
Dim B1 As Single
Dim K As Single
Dim AR, Pr, B As Single
Dim G5, FU, UU, L As Single
Dim G9, B2, S, H2, J As Single
Dim G8, J9, FI, EFE, AH As Single
Dim G(45, 11), D(4, 50) As Variant


'variables llenas
R = "PRUEBA"
N1 = 16
R3 = 25.4085
R1 = 23.95847
R4 = 1.04
R2 = 2
L3 = 3.305
W2 = N1 - 1
B8 = "F"

A2 = 121
A3 = 20
BE = 48
'R = InputBox("ARCHIVO DE SALIDA")
Debug.Print "ARCHIVO DE SALIDA "; R
Open R For Output As #3
A(0, 4) = 121.111111111111: A(0, 2) = 10
15 'N1 = InputBox("NUMERO DE MUESTRAS=")
Debug.Print "NUMERO DE MUESTRAS="; N1

'R3 = InputBox("fhMEDIO=")
Debug.Print "fhMEDIO="; R3

'R1 = InputBox("fcMEDIO=")
Debug.Print "fcMEDIO="; R1

'R4 = InputBox("jhMEDIO=")
Debug.Print "jhMEDIO="; R4



'R2 = InputBox("jcMEDIO=")
Debug.Print "jcMEDIO="; R2

'L3 = InputBox("DESVIO EST. DE fh=")
Debug.Print "DESVIO EST. DE fh="; L3


Debug.Print "MEDIA"; Tab(15); R1; Tab(30); R2; Tab(45); R3; Tab(60); R4; ""
Debug.Print "DESVIO EST."; Tab(15); L1; Tab(30); L2; Tab(45); L3; Tab(60); L4; ""


Open "C:\Users\Claudio Gawrysiak\Escritorio\2021\STUDE.DAT" For Input As #1

For X = 1 To 4
For Y = 1 To 50
Input #1, D(X, Y)
Next Y
Next X

Close #1


'B8 = InputBox("DESEA CALCULAR VALOR F O TIEMPO DE PROCESO (F/T)")
817 Debug.Print "DESEA CALCULAR VALOR F O TIEMPO DE PROCESO (F/T)="; B8


If B8 = "F" Then GoTo 1140
'End If
If B8 = "T" Then GoTo 819 Else: GoTo 817
'End If
819 c = 0: W = 0

820 Debug.Print "INGRESO DE DATOS PARA EL CALCULO DEL TIEMPO DE PROCESO"
Debug.Print "CALCULO DEL TIEMPO DE PROCESO"
For i = 1 To 30
'Debug.Print "="
Next i

If W = 1 Then GoTo 855
If c = 1 Then GoTo 855
'End If
'End If

Debug.Print "LA TU DE STUDENT PARA"; (N1 - 1); "GRADOS DE LIBERTAD ES"; D(1, N1 - 1); ""; " (p=.0025 A UNA COLA)"
W2 = D(1, N1 - 1)
855 Debug.Print "F(" & A(0, 4); "," & A(0, 2) & ")="; " P:"

'A2 = InputBox("Tr=")
Debug.Print "Tr="; A2

'A3 = InputBox("Tih=")
Debug.Print "Tih="; A3

Debug.Print "F("; A(0, 4); ","; A(0, 2); ")="; P

Debug.Print "Tr="; A2

Debug.Print "Tih="; A3; ""
If W = 1 Then GoTo 871
870 F3 = R3 + W2 * L3
'End If
'871 Print #3,
871 Debug.Print "fh poblacion:"; F3


Debug.Print "INTERPOLANDO LINEALMENTE EN LA TABLA fh/u; g z = 10; c"; "";
F4 = 10 ^ ((A(0, 4) - A2) / A(0, 2))
U = P * F4
gr = F3 / U
Debug.Print "fh/U="; gr; ""
For i = 1 To 50

If gr = D(2, i) Then X = D(3, i) * R2 + D(4, i): GoTo 940
'End If
If gr < D(2, i) Then K = i - 1: GoTo 920
'End If
910 Next i
920 AR = D(3, K) * R2 + D(4, K)
B = D(3, K + 1) * R2 + D(4, K + 1)
P = (AR - B) / (D(2, K) - D(2, K + 1))
X = Pr * gr + (AR - Pr * D(2, K))
940 B1 = F3 * Log(R4 * (A2 - A3) / X) / 2.3025851
Debug.Print "g="; X
'Debug.Print "g="; X

Debug.Print "B="; B1; "min"
'Debug.Print "B="; B1;

'Debug.Print "min"
Debug.Print "TIEMPO DE PUESTA EN REGIMEN?"; ""; "l="; L
Debug.Print B2 = B1 - 0.4 * L
Debug.Print "l="; L; "Pt="; B2; ""
960 Debug.Print "Pt="; B2
For i = 1 To 70
'Debug.Print "=";
Next i
Debug.Print "DESEA CALCULAR B NUEVAMENTE(S/N)"; S
If S = "S" Then
GoTo 820
ElseIf S = "N" Then GoTo 1950
Else: GoTo 960

Debug.Print "LA T DE STUDENT PARA"; N1 - 1; "GRADOS DE LIBERTAD ES"; W2
Debug.Print " (p="; H2; " A UNA COLA)"; ""; c = 1: GoTo 820

1140 Open "C:\Users\Claudio Gawrysiak\Escritorio\2021\STUMBO.DAT" For Input As #6
W = 0: c = 0: GoSub 2100
'End If
1150
Debug.Print "INGRESO DE DATOS PARA EL CALCULO DEL VALOR F"
Debug.Print "CALCULO DEL VALOR F"
For i = 1 To 19
Debug.Print "=";
Next

If W = 1 Then GoTo 1190: If c = 1 Then GoTo 1190
'End If

Debug.Print "LA T DE STUDENT PARA"; (N1 - 1); "GRADOS DE LIBERTAD ES"; D(1, N1 - 1); ""

Debug.Print "(P=.0025 A UNA COLA)": W2 = D(1, N1 - 1)
1190 'BE = InputBox("TIEMPO DE PROCESO B=")
'Debug.Print "TIEMPO DE PROCESO B="; BE
'BE = InputBox("TIEMPO DE PROCESO B=")
Debug.Print "TIEMPO DE PROCESO B= "; BE; " min"; ""
'A2 = InputBox("Tr=")
Debug.Print "Tr="; A2
'A3 = InputBox("Tih=")


'aca-----------------------------------------
Debug.Print "Tih="; A3

'Debug.Print "Tr="; A2
'Debug.Print "Tih="; A3; ""
If W = 1 Then GoTo 1260
F3 = R3 + W2 * L3
1260 W2 = D(1, N1 - 1): F3 = R3 + W2 * L3

1250 Debug.Print "fh POBLACION:"; F3
'"fh POBLACION:"; F3
1270 Debug.Print "INTERPOLANDO LINEALMENTE EN LA TABLA fh/U:g PARA z=10 C"; ""
1280 G5 = 10 ^ (Log(R4 * (A2 - A3)) / 2.3025851 - BE / F3): Debug.Print "g="; Round(G5, 6); ""
'-----------------------------g-----------------------------------------------------

If R2 < G(1, 1) Then
K = 1
Debug.Print "SE ADOPTA jc=0.4 ( EL OBTENIDO ES < )"
GoTo 1490
End If

For J = 1 To 9

If R2 = G(1, J) Then K = J: GoTo 1490
If R2 < G(1, J) Then K = J: GoTo 1470
Next J

1450 Debug.Print "SE ADOPTA jc=2.0 ( EL OBTENIDO ES > )": K = 9
1460 GoTo 1490

1470 For i = 1 To 44
1475 G8 = ((G(i, K) - G(i, K - 1)) / (G(1, K) - G(1, K - 1)))
1480 J9 = G(i, K - 1) + G8 * (R2 - G(0, K - 1)): G(i, 10) = J9
Next i: K = 10

1490 If G5 < G(1, K) Then Debug.Print "VALOR g CAE FUERA DE TABLAS": GoTo 1800


For i = 1 To 44
If G5 = G(i, K) Then FU = G(i, 1): GoTo 1560
If G5 < G(i, K) Then L = i: GoTo 1545
Next i

Debug.Print "VALOR g CAE FUERA DE TABLAS": GoTo 1800
'**************************ESTAS 2 LÍNEAS******************************************** *********

1545 G9 = (G(L, 1)) - G(L - 1, 0) / (G(L, K) - G(L - 1, K))
1550 FU = (G(L - 1, 0)) + G9 * (G5 - G(L - 1, K))

'************************************************* ********************************************
1560 UU = F3 / FU
'Debug.Print "fh/U="; FU
Debug.Print "fh/U="; FU
FI = 10 ^ ((A(0, 4) - A2) / A(0, 2))
EFE = UU / FI
'Debug.Print "F("; A(0, 4); ","; A(0, 2); ")="; EFE; "min"; ""
Debug.Print "F("; A(0, 4); ","; A(0, 2); ")="; EFE; "min"; ""

For i = 1 To 70: Debug.Print "=";
Next i

1610 Debug.Print "DESEA CALCULAR F NUEVAMENTE (S/N)"; B7
B7 = "N"

If B7 = "S" Then GoTo 1150


If B7 = "N" Then GoTo 1760 Else: GoTo 1610


1730 Debug.Print "LA T DE STUDENT PARA"; N1 - 1; "GRADOS DE LIBERTAD ES"; W2
Debug.Print " (P="; AH; "A UNA COLA)"; "": c = 1: GoTo 1150

1760 Debug.Print "DESEA CAMBIAR EL VALOR DE fhPOBLACION (S/N)"; B7
If B7 = "S" Then GoTo 1780


If B7 = "N" Then GoTo 1800 Else: GoTo 1760
B7 = "N"

1780 Debug.Print "NUEVO fhPOBLACION ="; F3
Debug.Print "NUEVO fhPOBLACION:"; F3
W = 1: GoTo 1150

1800 Debug.Print "DESEA CALCULAR TIEMPOS DE PROCESO (S/N)"; B7
B7 = "N"
If B7 = "S" Then GoTo 819

If B7 = "N" Then GoTo 2000 Else GoTo 1800


1950 Debug.Print "DESEA CAMBIAR EL VALOR DE fh poblacion (S/N)"; B7
B7 = "N"
If B7 = "S" Then
GoTo 1970
ElseIf B7 = "N" Then
GoTo 1983
Else
GoTo 1950
End If

1970 Debug.Print "NUEVO fh poblacion="; F3

Debug.Print "NUEVO fh poblacion:"; F3
W = 1: GoTo 820

1983 Debug.Print "DESEA CALCULAR VALORES F (S/N)"; B7
B7 = "S"
If B7 = "S" Then GoTo 1140
If B7 = "N" Then GoTo 2000 Else GoTo 1983


2000 Debug.Print "DESEA REPETIR PARA OTROS VALORES (S/N)"; B7

B7 = "N"
If B7 = "S" Then GoTo 15

If B7 = "N" Then GoTo 2010 Else: GoTo 2000


2010 End
2100 For X = 1 To 44
For Y = 1 To 10
Input #6, G(X, Y)
Next Y
Next X

Close #6
Return
'End If
'End If
'End If
'End If
End If


End Sub
[IMG]C:\Users\Claudio Gawrysiak\Escritorio\2021\imagem.png[/IMG]