Visual Basic para Aplicaciones - revision de macro

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

revision de macro

Publicado por miguel (1 intervención) el 02/02/2019 02:40:07
Buen día.- tengo la siguiente macro donde busca celdas con valor 0 y en lugar de eliminar las celdas cuando ya están en blanco me borra también la fila, el detalle es que ocupo lo siguiente ejemplo.
columnaA columna B
producto(a1) horas
caja (a2) 2
bolsa (a3) 0 (b3)
envase ( a4) 3

que borre la celda con el 0 junto con su celda anterior, es decir que borre A3 Y B3 únicamente por que en mi macro borra las filas y quiero conservar una tabla que esta a un lado del listado, y si lo realizan verán que no respeta el rango para que borre solamente ahí, ¿Qué esta mal?

anexo macro

1
2
3
4
5
6
7
8
9
10
11
Sub RemoveZero()
Dim rango As Range
Set rango = Range("N7:O43")
For Each celda In rango
If celda.Value = 0 Then
celda.ClearContents
End If
Next
Range("N7:O43").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Selection.AutoFilter
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

revision de macro

Publicado por MIGUEL (121 intervenciones) el 02/02/2019 19:39:16
Bueno pues respondiendo la pregunta pues esta mal que uses la instrucción EntireRow. Delete si no quieres eliminar la fila completa, si no te interesan los datos en la fila con el valor cero podrías cortar la tabla y pegarla en otra hoja, si te interesan los datos de la. Fila pues déjalas en blanco (las celdas con valor 0), ya que para eliminar las celdas de la hoja o eliminas toda la fila o toda la columna, te dejo la macro para cortar la tabla y pegarla en donde estaba sin perder ninguna fila de esta y en la misma hoja, tu macro queda asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub RemoverZero()
 
Dim rango as Range
Dim ultFila as Long
ultFila=Range("N" & rows. Count). End(xlup). Row
Set rango=Range("N7:O" & ultFila)
For Each celda in rango
If celda. Value=0 Then
celda. ClearContents
End If
Next
'CAMBIAR NOMBRE DE LA Tabla POR EL DE LA TUYA
Range("Tabla1[#A11]"). Select
Selection.Cut
' AQUÍ VA A PEGAR LA TABLA EN EL SIGUIENTE RANGO LO PUEDES MODIFICAR LA COLUMNA SI TE AFECTA COMO ESTA
Range(("Q" & ultFila + 1).select
ActiveSheet.paste
Range("N7:O" & ultFila).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'Selection.AutoFilter
Range("Tabla1[#A11]").Select
Selection.Cut
' AQUÍ REGRESA LA TABLA A SU LUGAR DE ORIGEN
Range("Q1").Select
ActiveSheet.Paste
End Sub

NOTA:COMENTE EL AUTOFILTRO PORQUE NO SE A QUE SE LO. APLIQUES

Epero te sirva

SALUDOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar