Saltar al contenido

Duda sobre while wend

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

Featured Replies

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...
publicado
  • Autor

Muchas gracias, doy por solucionado el tema. Disculpen la demora pero no podía acceder al foro hace unas semanas y desistí. Al final era problema de mi computadora.

  • Silvia bloqueó este tema

Archivado

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