• Lunes 29 de Abril de 2024, 05:06

Autor Tema:  Eliminar Filas  (Leído 2312 veces)

javig

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Eliminar Filas
« en: Jueves 28 de Febrero de 2008, 14:07 »
0
holaa:
resulta que para el trabajo necesito hacer una macro con lo siguiente (de momento lo estoy haciendo sin macro y con un ejemplo parecido pero pequeño para ver si me funcionaría).
Resulta que de una tabla dinámica, sólo me interesa saber los valores de la cuarta columna. Si tienen un determinado valor dejo la fila como está y sino pues la borro, de momento (más adelante las filas que me cumplen la condición deberé guardarlas en otra hoja o en otro archivo excel).
El código que tengo es el siguiente y no sé por qué siempre me borra únicamente la primera fila:

Private Sub CommandButton1_Click()
    Dim fila As Long, columna As Long
    fila = 1
    columna = 1
    Do While Cells(fila, columna) <> ""
       Do While Cells(columna, fila) <> ""
          If ((columna = 4) And (Cells(columna, fila) <> "Bien") And (Cells(columna, fila) <> "Forzada")) Then
            Rows(fila).Delete
          End If
          columna = columna + 1
       Loop
       fila = fila + 1
       columna = 1
    Loop    
End Sub

Quiero que las filas cuya columna sea diferente de "Bien" ó "Forzada" de momento, se eliminen.

A ver si alguien me puede echar un cable...
Muchas gracias.
Javi

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Eliminar Filas
« Respuesta #1 en: Jueves 28 de Febrero de 2008, 16:08 »
0
Creo yo que tu error esta en el ciclo anidado:

Código: Text
  1. Do While Cells(columna, fila) &#60;&#62; &#34;&#34;
  2.  
Supongo que con ese segundo ciclo quieres recorrer las columnas de determinada fila, pero no estas haciendo eso.

Con ese ciclo lo que estas haciendo es comparar los datos de lineas.
Mira, al Cells le debes de enviar linea y columna, en ese orden. Supon que fila = 1 y columna = 3.
Si mandas llamar Cells(fila, columna) entonces obtienes el valor de la fila 1 y la columna 3.
Y si mandas llamar Cells(columna, fila) entonces obtienes el valor de la fila 3 y la columna 1.

Lo que quiero decir es que en tu segundo ciclo:
Código: Text
  1.  
  2. Do While Cells(columna, fila) &#60;&#62; &#34;&#34;
  3. .
  4. .
  5. .
  6. columna = columna + 1
  7. Loop
  8.  
  9.  

Suponiendo que fila=1, estas recorriendo:
fila 1, columna 1
fila 2, columna 1
fila 3, columna 1
etc

No estas recorriendo las columnas.

Si eso es lo que querias hacer, recorrer las lineas y no las columnas entonces no entendi bien tu problema  :D