Problema con codigo macro

07/04/2006 - 02:36 por Mk | Informe spam
Hola!

De nuevo me surgen mas dudas... Una de las macros que estoy creando
elimina todas las filas que tengan las celdas en blanco de una
determinada columna (E)

[F:F].SpecialCells(xlCellTypeBlanks).EntireRow.Delete

el problema surge porque parece que en realidad "no borra" las filas ya
que al visualizar la matriz resultante parece que quedan ocultas.

Me explico muy mal pero quizás me entendais de un modo mas gráfico.

FILA

1
2
5
9
12

No existen las filas 3,4,6,7,8..etc y lo que necesitaría es que al
borrar las filas estas quedasen "consecutivas", es decir

1
2
3
4

Perdón por la explicación pero creo que es la mejor forma de explicaro.

Muchas gracias
 

Leer las respuestas

#1 Mk
08/04/2006 - 01:17 | Informe spam
Héctor Miguel escribió:
hola, Mk !

... macros que... elimina todas las filas que tengan las celdas en blanco de una determinada columna (E)
[F:F].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
... parece que en realidad "no borra" las filas ya que al visualizar la matriz resultante parece que quedan ocultas.



nota que la instruccion -> .EntireRow.Delete NO oculta... ELIMINA las filas 'indicadas' ;)
tienes registros 'filtrados' en el rango donde aplicas la macro ?

comentas [si hubiera] detalles adicionales ?
saludos,
hector.




Hola HM!

Como siempre, gracias por responder.

Creo que el error está efectivamente en el filtrado pero tengo que
realizarlo por narices puesto que uno de los procesos de la macro es que
elimine las filas de la matriz que tengan determinado valor en la columna E.

Para ser mas exacto, todas las celdas de la columna E que tengan valor
0, 2 ó 3 quiero que sean eliminadas junto con su fila. El código que
tengo para esta acción es el siguiente:

' Ahora trato de filtrar mas rapido y sin falloS
' Defino las variables

Dim Rng As Range
Dim I As Long
Dim myArr As Variant

myArr = Array("0", "2", "3")
For I = LBound(myArr) To UBound(myArr)

ActiveSheet.Range("E1:E10000").AutoFilter Field:=5,
Criteria1:=myArr(I)
With ActiveSheet.AutoFilter.Range
Set Rng = Nothing
On Error Resume Next
Set Rng = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not Rng Is Nothing Then Rng.EntireRow.Delete
End With
Next I
ActiveSheet.AutoFilterMode = False


' Ya he realizado el filtrado y solo tengo los articulos de MV1
' Elimino la columna E ya que no me hace falta

[E:E].EntireColumn.Delete


Para el resto de celdas de la columna E que estén en blanco las elimino
simplemente con la instrucción del princio, ¿alguna idea?.

Saludos!

Preguntas similares