Bucle con dos condiciones

19/02/2007 - 21:28 por rgg27 | Informe spam
Tengo un bucle que se ejecuta cuando cumple una condición. Pero
necesitaría, con vuestra ayuda, que acabara el código cuando se
cumpliera cualquiera de dos condiciones.
El bucle es éste:

Sub macro1()
Dim inferior As Double
Dim coeficiente As Double
Dim superior As Double
Dim coeficiente_1 As Double
'
inferior = -10000
coeficiente = 0
coeficiente_1 = 1
superior = 10000
'
Do While (Abs(Range("R14").Value) >= 0.001)
'
If Range("R14").Value > 0 Then
superior = coeficiente
coeficiente_1 = coeficiente
coeficiente = (coeficiente + inferior) / 2
Else
inferior = coeficiente
coeficiente_1 = coeficiente
coeficiente = (coeficiente + superior) / 2
End If
Range("R16").Value = coeficiente
Loop
End Sub

Este código me funciona, y se para cuando el valor absoluto de R14 es
menor que 0,001

Pero lo que necesito es que también se acabe el proceso cuando
"coeficiente" sea igual a "coeficiente_1"

Do While (coeficiente <> coeficiente_1)

¿Cómo puedo hacer para que el bucle se realice cuando se dan estas dos
condiciones y acabe cuando no se cumpla cualquiera de ellas?
Esta: Do While (Abs(Range("R14").Value) >= 0.001)
o ésta?: Do While (coeficiente <> coeficiente_1)
 

Leer las respuestas

#1 Insumos
20/02/2007 - 00:53 | Informe spam
Antes de Loop agregué esta línea:

If coeficiente_1 = coeficiente Then Exit Sub

Lo probé y parece funcionar.
Ahora si el código que pusiste es parte de una macro más grande de cumplirse
el If la macro no continuará ejecutándose.
Espero que te sirva. Saludos.


escribió en el mensaje
news:
Tengo un bucle que se ejecuta cuando cumple una condición. Pero
necesitaría, con vuestra ayuda, que acabara el código cuando se
cumpliera cualquiera de dos condiciones.
El bucle es éste:

Sub macro1()
Dim inferior As Double
Dim coeficiente As Double
Dim superior As Double
Dim coeficiente_1 As Double
'
inferior = -10000
coeficiente = 0
coeficiente_1 = 1
superior = 10000
'
Do While (Abs(Range("R14").Value) >= 0.001)
'
If Range("R14").Value > 0 Then
superior = coeficiente
coeficiente_1 = coeficiente
coeficiente = (coeficiente + inferior) / 2
Else
inferior = coeficiente
coeficiente_1 = coeficiente
coeficiente = (coeficiente + superior) / 2
End If
Range("R16").Value = coeficiente
Loop
End Sub

Este código me funciona, y se para cuando el valor absoluto de R14 es
menor que 0,001

Pero lo que necesito es que también se acabe el proceso cuando
"coeficiente" sea igual a "coeficiente_1"

Do While (coeficiente <> coeficiente_1)

¿Cómo puedo hacer para que el bucle se realice cuando se dan estas dos
condiciones y acabe cuando no se cumpla cualquiera de ellas?
Esta: Do While (Abs(Range("R14").Value) >= 0.001)
o ésta?: Do While (coeficiente <> coeficiente_1)

Preguntas similares