Saltar al contenido

Duda sobre while wend


Recommended Posts

publicado

Buen día

Si en las cinco primeras filas de la columna A tengo los siguientes valores (en A1, A2, A3, A4 y A5 respectivamente)

A

1 Negro

2 Amarillo

3 Azul

4 Rojo

5 Verde

Y coloco en vba el siguiente código:

Sub Prueba

'Estando en A5 subirá fila por fila y se detendrá cuando encuentre la palabra Noche

Range("A5").Select

While ActiveCell <> "Noche"

ActiveCell.Offset(-1, 0).Select

Wend

End Sub

¿Quisiera saber por qué genera error?

La respuesta más simple sería porque nunca encontró la palabra Noche al ir subiendo desde A5 hasta A1, celda por celda, pero ¿por qué genera error exactamente?

¿El while genera error porque nunca se detuvo?

¿Genera error porque al menos debería cumplirse una vez?

¿Por qué si no encontrá el valor, simplemente no se queda en A1 tranquilo? Si no encontré el dato, no lo encontró, ¿por qué lanza error?

¿O genera error porque al finalizar su tarea llega a la celda A1, no encuentra el texto Noche y le obligo a de A1 "disminuir" una fila (la cual obviamente no existe) y eso da error?

En todo caso probé:

While ActiveCell <> "Noche"

If ActiveCell.Select <> "A1" Then

ActiveCell.Offset(-1, 0).Select

End If

Wend

E igual da error

Cual sería la respuesta exacta sobre este while

Agradezco la ayuda

Saludos

Error while.xls

publicado

Las instrucciones del bucle se ejecutan mientras la condición sea True.

Entonces como siempre es verdadero, cuando llega a la celda A1 esta instruccion se ejecuta

ActiveCell.Offset(-1, 0).Select

Da error porque no existe la celda A0

Un saludo.

publicado

.

Sustituye tu código por este:

For x = 5 To 1 Step -1
Range("A" & x).Select
If Selection = "Noche" Then Exit For
Next[/CODE]

.

Otra opción:

[CODE]Range("A6").Select
Do
ActiveCell.Offset(-1, 0).Select
Loop Until Activecell = "Noche" Or _
Activecell.Row = 1[/CODE]

Saludos amigo [uSER=3]@Toldeman[/uSER].

.

publicado

Hola esta es otra opcion:


Sub Prueba()
Dim celda As Range

For Each celda In Range("A1:A5")
If celda <> "Azul" Then celda.Select
Next
End Sub
[/CODE]

Aqui se recorre desde A1 hasta A5, celda por celda y lo siento mas claro y entendibe.

Saludos!

  • 1 month later...
  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.