Prueba de VBA para línea vacía y eliminación
Resuelto
Mrfrize
Mensajes publicados
197
Fecha de registro
Estado
Miembro
Última intervención
-
camanagro -
camanagro -
Hola,
He estado revisando el foro y no he encontrado la respuesta a mi pregunta.
Deseo eliminar las filas que están completamente vacías de una tabla. Mi macro funciona, pero muestra este mensaje de error y no entiendo por qué.
Error en tiempo de ejecución '1004':
Error definido por la aplicación o definido por el objeto
Aquí está la macro en cuestión:
sub supligne
Dim lastline,firstline as integer
'encuentra la última línea de la tabla
lastline = ActiveSheet.UsedRange.Rows.Count
'encuentra la primera línea de la tabla de datos
For a = 1 To lastline Step 1
If Cells(a, 1).Value = "Priority" Then
firstline = a + 1
End If
Next a
'Elimina las filas vacías
For r = lastline To firstline Step -1
If Application.CountA(Rows(r)) = Empty Then Rows(r).EntireRow.Delete
Next r
end sub
He intentado cambiar Empty por "", pero eso funciona aún peor.
¿Alguien puede decirme dónde me he equivocado?
Muchas gracias
PD: Lo siento si no escribo todas las letras acentuadas, pero actualmente estoy trabajando con un teclado qwerty.
Configuración: Windows XP / Internet Explorer 7.0
He estado revisando el foro y no he encontrado la respuesta a mi pregunta.
Deseo eliminar las filas que están completamente vacías de una tabla. Mi macro funciona, pero muestra este mensaje de error y no entiendo por qué.
Error en tiempo de ejecución '1004':
Error definido por la aplicación o definido por el objeto
Aquí está la macro en cuestión:
sub supligne
Dim lastline,firstline as integer
'encuentra la última línea de la tabla
lastline = ActiveSheet.UsedRange.Rows.Count
'encuentra la primera línea de la tabla de datos
For a = 1 To lastline Step 1
If Cells(a, 1).Value = "Priority" Then
firstline = a + 1
End If
Next a
'Elimina las filas vacías
For r = lastline To firstline Step -1
If Application.CountA(Rows(r)) = Empty Then Rows(r).EntireRow.Delete
Next r
end sub
He intentado cambiar Empty por "", pero eso funciona aún peor.
¿Alguien puede decirme dónde me he equivocado?
Muchas gracias
PD: Lo siento si no escribo todas las letras acentuadas, pero actualmente estoy trabajando con un teclado qwerty.
Configuración: Windows XP / Internet Explorer 7.0
9 respuestas
-
Hola,
Aprovecho para cambiar [Empty] por [0].
--
Saludos.
El Pingüino -
Hola el hilo,
llego después de la batalla pero bueno
Option Explicit
Sub supligne()
Dim lastline, firstline As Integer
Dim a, r As Long
'encuentra la última línea de la tabla
lastline = ActiveSheet.UsedRange.Rows.Count
'encuentra la primera línea de la tabla de datos
For a = 1 To lastline Step 1
If Cells(a, 1).Value = "Priority" Then
firstline = a + 1
End If
Next a
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub
o más simplemente
Sub Suplignvides()
Dim r As Long
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub
--
A+
Mike-31
Un periodo de fracaso es un momento perfecto para sembrar las semillas del conocimiento. -
En la línea:
Si Application.CountA(Rows(r)) = Vacío Entonces Rows(r).EntireRow.Delete
Lo que está subrayado es lo que está resaltado en modo depuración. -
y luego poner
Si Application.CountA(Rows(r)) = Empty Entonces Rows(r).EntireRow.Delete
Buenas noches -
Hola,
En este caso el problema está en otro lugar, ¿en qué línea se detiene la ejecución del procedimiento?
--
Saludos.
El Pingüino -
Mala definición de la variable. En lugar de
For r = lastline To fistline Step -1
hay que
For r = lastline To firstline Step -1
y así funciona.
Saludos -
Muchas gracias,
Y pensar que estuve buscando durante varias horas por qué no funcionaba. Tendré más cuidado la próxima vez, es realmente tonto perder tanto tiempo por eso.
Gracias de nuevo. -
Hola,
Para evitar errores de nombres de variable, ve a 'opciones / editor' (del VBE) y marca 'Declaración de variables obligatoria'
Todos tus módulos comenzarán con Opción Explícita y no podrás ingresar un nombre no declarado.
eric -
Hola,
También quisiera eliminar las filas vacías de mi tabla y por eso he copiado exactamente lo que se dijo. Sin embargo, aunque la macro funciona, también tengo este mensaje de error... (he reemplazado "fist" por "first", y aún utilizando la última macro Suplignvides(), tengo este mensaje.
Pregunta adicional: idealmente, me gustaría eliminar todas las filas vacías de mi hoja de cálculo, excepto aquellas seguidas de una fila cuya primera celda no esté vacía. He intentado con bucles "if" que no funcionan en absoluto, así que supongo que hay una mejor manera similar a la mencionada anteriormente.
¡Muchas gracias por tu ayuda!