¿Por qué no puedo borrar un rango?
¡Hola Amigo Prozac!
Deseo te encuentres bien.
Ya hace tiempo que te consulté para que me ayudaras a crear una macro que me filtrara algunos datos. Espero te acuerdes.
Ahora bien, a esa macro le he agregado unos códigos más (tal vez no de forma muy coherente, o como me has dicho "muy liados"), sin embargo, mi problema es que no puedo borrar todo el rango de la filtración. Trataré de darme a entender:
En un módulo me dijiste que insertara el siguiente código:
Sub FiltraCelda(target As Range, ro As Range, rd As Range)
Dim c As Range
Dim i As Integer
i = 0
For Each c In ro
If InStr(UCase(c), UCase(target)) > 0 Then
rd.Offset(i, 0) = c
i = i + 1
End If
Next c
End Sub
Function CalculaRangoOrigen(rini As Range) As Range
If rini.Offset(1, 0) = "" Then
Set CalculaRangoOrigen = rini
Else
Set CalculaRangoOrigen = Range(rini, rini.End(xlDown))
End If
End Function
Sub BorraFiltro(c As Range)
c = ""
End Sub
Y en la hoja "PEDIDO" coloqué este otro:
Private Sub WorkSheet_Change(ByVal target As Range)
On Error Resume Next
For i = 12 To 91
Application.EnableEvents = True
If Not Application.Intersect(target, Range("J" & i)) Is Nothing Then
If Range("J" & i) = "" Then
Call BorraFiltro(CalculaRangoOrigen(Range("B" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("H" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("T" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("Z" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("AB" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("AD" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("AP" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("AR" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("AX" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BD" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BJ" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BL" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BN" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BP" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BR" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BT" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("BZ" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("CE" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("CI" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("CK" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("CM" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("CO" & i)))
Call BorraFiltro(CalculaRangoOrigen(Range("CS" & i)))
Else
Call FiltraCelda(Range("J" & i), CalculaRangoOrigen(Worksheets("BASE DE DATOS").Range("E3")), Range("AD" & i))
End If
End If
Application.EnableEvents = False
Next i
Si notas Prozac, uso la macro "BorraFiltro" para borrar los datos arrojados por la filtración y funciones ConsultaV en cada una de las columnas ("B", "H", "T", "Z", etc.). Así pues, ¿cómo puedo hacerle para que la macro "BorraFiltro" me permita borrar en una sola acción o con un solo rango todos los datos de la filtración y las ConsultasV? Y es que si borro tal como lo tengo ahorita, primero se me borran los datos de la columna "B", luego los datos de la columna "H" y así sucesivamente hasta llegar a la última columna, la "CS".
Intenté hacerlo de la siguiente forma pero no me funcionó:
Call BorraFiltro(CalculaRangoOrigen(Range("B" & i & ":" & "CS" & i)))
¿Por qué no puedo borrar éste rango?
Bueno Prozac, gracias por la ayuda que siempre me has dado.
P. D. Adjunto link de descarga http://www.mediafire.com/download.php?1apymq7qqp83e9s