Imprimir página | Cerrar ventana

Macro para eliminar fila especificando cual

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84953
Fecha de impresión: 26/Marzo/2026 a las 20:58


Tema: Macro para eliminar fila especificando cual
Publicado por: Beatrix
Asunto: Macro para eliminar fila especificando cual
Fecha de publicación: 18/Enero/2020 a las 19:29
Buenas tardes.

Estoy empezando con esto de la programación y tengo una duda con la que espero que me puedan ayudar.
He creado un botón para eliminar una fila (registro), el cual quiero que me cree un mensaje preguntando que número de registro (que estará en la columna B) y que al poner el número me elimine la fila que contiene dicho numero de registro.
LA macro que he hecho me funciona perfectamente hasta que no hay ningún registro en las filas, y aun así le doy a eliminar. Entonces me da error.
no quiero que me de error, ya que la macro protege la hoja, y si me da error no.

Lo que tengo es lo siguiente:

Sub Eliminar_Reclamacion()

Worksheets("Registro_anual").Unprotect ("contraseña")


Valor = InputBox("¿Nº registro a eliminar?")
If Valor = "" Then
End If

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
If Range("B2").Value = 0 Or Range("B2").Value = "" Or Range("B2").Value = Empty Or Celda = "" Then


End If


ActiveSheet.Protect Password:="contraseña", DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowInsertingHyperlinks:=True

End Sub

Cuando no hay ningún registro mas, es decir, no hay filas, y aun así das a eliminar la macro se para en:
If Not Celda Is Nothing Then Rows(Celda.Row).Delete

¿Cómo puede hacer para que aun haciendo eso no me de error y la hoja me la proteja?

Gracias!!



Respuestas:
Publicado por: AnSanVal
Fecha de publicación: 18/Enero/2020 a las 21:48
Es recomendable declarar las variables (Dim). Si marcas «Requerir declaración de variables» en: Herramientas > Opciones, Excel te lo recordará (si no está/n declarada/s).

Sub Eliminar_Reclamacion()
  Dim fila As String
'Suponiendo Título en B1 (que no será borrado) >> B2=Reg. 1º.
  If [B2] = "" Then Exit Sub ' No elimina.
  With Worksheets("Registro_anual")
    .Unprotect ("contraseña")
'Ofrece la última fila con datos (si es otra escríbela).
    fila = InputBox("¿Nº registro a eliminar?", "Beatrix - Eliminar fila", Cells(Rows.Count, 2).End(xlUp).Row)
 'Si has pulsado Cancelar sale.
    If fila = "" Then Exit Sub
'Elimina la fila.
    Rows(Val(fila)).Delete
'Protege la hoja
    .Protect Password:="contraseña", DrawingObjects:=False, Contents:=True, _
        Scenarios:=True, AllowInsertingHyperlinks:=True
  End With
End Sub
'Eliminar_Reclamación


-------------
Saludos desde Tenerife.


Publicado por: Beatrix
Fecha de publicación: 20/Enero/2020 a las 10:10
Muchisimas gracias!!!



Imprimir página | Cerrar ventana