Borrar rango en otra hoja sin desplazarme a ella

Buen día.
Tengo una inquietud: cómo hago para hacer operaciones en diferentes hojas pero sin desplazarme hacia ellas. Por ejemplo, borrar una información en un rango específico de otra hoja que no es la que tengo en pantalla.
Parece que el "select" es quien me redirige pero no se como hacer si no lo utilizo. No se si el comando "active" puede reemplazar al "select" por que no conozco las diferencias entre ambos.
Tengo este código y quisiera no tener que desplazarme a la hoja COMPRAS:
_______________________________________
Sheets("COMPRAS").Select
Range("A2").Select
'Recorro verticalmente la hoja en busca de la primera fila vacía
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop
'Ahora recorro las celdas horizontalmente
ActiveCell.Offset(-1, 0).Select
Do While ActiveCell <> Empty
ActiveCell.Offset(0, 1).Select
Loop
BorraRango = ActiveCell.Address
Sheets("COMPRAS").Range("A2" & ":" & BorraRango).ClearContents
_______________________________________
Muchas gracias :)

1 Respuesta

Respuesta
1
Inserta este macro en un modulo:
Sub borrar()
Dim BorraRango As String
Dim i As Long
Dim fila As Integer
'Recorro verticalmente la hoja en busca de la primera fila vacía
i = 2
Do While Sheets("COMPRAS").Range("A" & i) <> Empty
i = (i + 1)
DoEvents
Loop
fila = (i - 1)
i = 1
'Ahora recorro las celdas horizontalmente
Do While Sheets("COMPRAS").Cells(fila, i) <> Empty
i = (i + 1)
DoEvents
Loop
BorraRango = Sheets("COMPRAS").Cells(fila, i).Address
Sheets("COMPRAS").Range("A2" & ":" & BorraRango).ClearContents
End Sub
Es una adaptación del tuyo, solo correrá para la hoja con nombre COMPRAS si le cambias el nombre a la hoja debes modificar la misma en este macro.
Como ves en los bucles hacemos referencia a la hoja utilizando el objeto sheets y sus rangos. Así no importa en donde estamos las acciones de este macro sera siempre sobre la misma hoja, ahora si no existen datos en A2 el macro no corre, si necesitas que el macro parta evaluando desde A3 o A4 sencillamente modifica la asignación de la variable i que esta entes del primer while.
Si te sirve CIERRA la pregunta
Excelente! El código funciona muy bien. Veré si puedo modificarlo un poco para reducir el número de variables pero de todos modos está perfecto y me sacó de una inquietud enorme para prescindir de los métodos Select.
Ahora sólo quisiera saber algo para aclarar dudas y aprovechar la pregunta antes de evaluarla. ¿Qué hace exactamente la línea DoEvents? Nunca la he usado. Gracias!
Evita que el sistema se "cuelgue" esta linea le pasa el mando al sistema operativo.
Cierra la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas