Metodo Evaluate

17/02/2004 - 11:53 por Miguel | Informe spam
Tengo en Excel una función integrada que necesita evaluar
una expresión (por ejemplo: "0^2+2*0+1") varias veces en
un ciclo while. El problema es que la primera vez evalúa
la expresión bien, pero a la segunda se para y no
continúa.

Lo he comprobado con puntos de interrupción, y ni siquiera
hay errores, la función se para sin más.

¿El método Evaluate sólo se puede ejecutar una vez en cada
función? ¿Alguna idea?

Preguntas similare

Leer las respuestas

#1 LauMan MX \(Manolo\)
17/02/2004 - 15:24 | Informe spam
cual es la formula completa?

Saludos

Manolo
Cancun, México





"Miguel" escribió en el mensaje
news:1171c01c3f544$3940dfc0$
Tengo en Excel una función integrada que necesita evaluar
una expresión (por ejemplo: "0^2+2*0+1") varias veces en
un ciclo while. El problema es que la primera vez evalúa
la expresión bien, pero a la segunda se para y no
continúa.

Lo he comprobado con puntos de interrupción, y ni siquiera
hay errores, la función se para sin más.

¿El método Evaluate sólo se puede ejecutar una vez en cada
función? ¿Alguna idea?
Respuesta Responder a este mensaje
#2 Miguel
17/02/2004 - 21:20 | Informe spam
Public Function Simpson(Formula As String, Inferior As
Double, Superior As Double, Optional Precision As Integer
= 100) As Double

Dim Pasos As Integer, Intervalo As Double, X As Double, Y
As Double
Dim AEvaluar As String
If Precision Mod 2 = 1 Then Precision = Precision + 1

Intervalo = (Superior - Inferior) / Precision
Pasos = Precision \ 2

X = Inferior
Y = Application.Evaluate(Replace(Formula, "x", X, , ,
vbTextCompare))

While Pasos <> 0
X = X + Intervalo
AEvaluar = Replace(Formula, "x", X, , , vbTextCompare)
Y = Y + 4 * Application.Evaluate(Replace(Formula, "x",
X, , , vbTextCompare))
X = X + Intervalo
AEvaluar = Replace(Formula, "x", X, , , vbTextCompare)
Y = Y + 2 * Application.Evaluate(Replace(Formula, "x",
X, , , vbTextCompare))
Pasos = Pasos - 1
Wend

X = Superior
Y = Y - 2 * Application.Evaluate(Replace(Formula, "x",
X, , , vbTextCompare))

Simpson = Y

End Function
Respuesta Responder a este mensaje
#3 LauMan MX \(Manolo\)
17/02/2004 - 23:11 | Informe spam
no hay un error en la fila

pasos = precision \ 2

está al reves la barra para dividir

Saludos

Manolo
Cancun, México





"Miguel" escribió en el mensaje
news:1206601c3f593$761fa990$
Public Function Simpson(Formula As String, Inferior As
Double, Superior As Double, Optional Precision As Integer
= 100) As Double

Dim Pasos As Integer, Intervalo As Double, X As Double, Y
As Double
Dim AEvaluar As String
If Precision Mod 2 = 1 Then Precision = Precision + 1

Intervalo = (Superior - Inferior) / Precision
Pasos = Precision \ 2

X = Inferior
Y = Application.Evaluate(Replace(Formula, "x", X, , ,
vbTextCompare))

While Pasos <> 0
X = X + Intervalo
AEvaluar = Replace(Formula, "x", X, , , vbTextCompare)
Y = Y + 4 * Application.Evaluate(Replace(Formula, "x",
X, , , vbTextCompare))
X = X + Intervalo
AEvaluar = Replace(Formula, "x", X, , , vbTextCompare)
Y = Y + 2 * Application.Evaluate(Replace(Formula, "x",
X, , , vbTextCompare))
Pasos = Pasos - 1
Wend

X = Superior
Y = Y - 2 * Application.Evaluate(Replace(Formula, "x",
X, , , vbTextCompare))

Simpson = Y

End Function

Respuesta Responder a este mensaje
#4 Miguel
19/02/2004 - 00:20 | Informe spam
No es un error, la barra al revés realiza una división
entera (divide dos enteros, y devuelve como resultado otro
entero). De todas maneras, el código se para más abajo de
esta sentencia.

no hay un error en la fila

pasos = precision \ 2

está al reves la barra para dividir

Saludos

Manolo
Cancun, México

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida