Excel - Macro borrar filas especificando valor de una celda

 
Vista:

Macro borrar filas especificando valor de una celda

Publicado por Beatriz (3 intervenciones) el 15/01/2020 13:03:40
Buenos días

Tengo problemas con una macro que quiero para eliminar filas, especificando qúe fila quiero elimina, es decir, al hacer click en la macro, me pregunta "que fila quieres eliminar" y especificas el valor de la celda que quieres borrar.

1
2
3
4
5
6
7
8
9
10
11
12
Sub Eliminar_Reclamacion()
 
 
Valor = InputBox("¿Nº RECL a eliminar?")
 
Set Celda = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Valor, LookIn:=xlValues)
 
If Not Celda Is Nothing Then Rows(Celda.Row).Delete
 
 
 
End Sub


Hasta ahí bien, pero no quiero que me borre nada, si no hay valor en dicha celda (en blanco) ya que no quiero que me altere títulos, ni nada.

Hasta ahora hice lo siguiente, que me funciona correctamente siempre que especifique un valor, pero que me da error si doy a aceptar sin especificar ningún valor

¿Me podrían ayudar?

Gracias
SAludos
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro borrar filas especificando valor de una celda

Publicado por Antoni Masana (2481 intervenciones) el 15/01/2020 15:01:19
Debes delimitar el valor de la variable

1
2
3
4
5
6
7
8
9
10
Sub Eliminar_Reclamacion()
    Dim Texto As String, Valor As Long
 
    Texto = InputBox("¿Nº RECL a eliminar?")
    Valor = Val(Texto)
    IF Valor > 1 and Valor <= 2^20 Then
        Set Celda = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Valor, LookIn:=xlValues)
        If Not Celda Is Nothing Then Rows(Celda.Row).Delete
    End If
End Sub

He especificado que el Valor sea mayor de 1 para que no se pueda borrar la cabecera.

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

Macro borrar filas especificando valor de una celda

Publicado por Beatriz (3 intervenciones) el 15/01/2020 15:30:17
Hola Antoni

Antes de nada muchas gracias por tu respuesta y ayuda.

Lo que me pasa es que ahora con tu código no me borra nada....¿?

El valor de esa celda, la B, proviene de un formulario de excel creado con macro donde es igual a:

Cells(fila, 2) = (Bast.Value & ("_") & FEntrada.Value)

¿Puede ser por eso?

No entiendo por qué ahora no me borra nada

De nuevo gracias
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
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro borrar filas especificando valor de una celda

Publicado por Antoni Masana (2481 intervenciones) el 15/01/2020 16:19:29
Entendí mal el problema, lo que introduces no es un número de línea, es una referencia.
Es mejor declarar las variables porque mejora el rendimiento de las macros pero en este caso como no se que tipo de valor tiene la declaro sin especificar que es casi lo mismo que no declararla.

1
2
3
4
5
6
7
8
Sub Eliminar_Reclamacion()
    Dim Valor
    Valor = InputBox("¿Nº RECL a eliminar?")
    IF Valor <> Empty Then
        Set Celda = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Valor, LookIn:=xlValues)
        If Not Celda Is Nothing Then Rows(Celda.Row).Delete
    End If
End Sub

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

Macro borrar filas especificando valor de una celda

Publicado por Beatriz (3 intervenciones) el 16/01/2020 11:45:11
Hola Antoni,

Pues me sigue dando error. El depurador me marca error en Rows(Celda.Row).Delete.

El caso es que se me ha ocurrido acotar el rango poniendo (B3:B) y haciendo esto ahora me funciona bien, y si no pongo valor no me borra la cabecera, así que ya tendría el caso arreglado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Eliminar_Reclamacion()
 
Worksheets("Registro_anual").Unprotect ("wartia")
 
 
Valor = InputBox("¿Nº RECL a eliminar?")
 
Set Celda = Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Valor, LookIn:=xlValues)
 
If Not Celda Is Nothing Then Rows(Celda.Row).Delete
 
 
Worksheets("Registro_anual").Protect ("wartia")
 
End Sub

Gracias por tu ayuda y por tus rápidas respuestas!

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