** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Macro para eliminar fila especificando cual
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoMacro para eliminar fila especificando cual

 Responder Responder
Autor
Mensaje
Beatrix Ver desplegable
Nuevo
Nuevo


Unido: 18/Enero/2020
Localización: MAdrid
Estado: Sin conexión
Puntos: 3
Enlace directo a este mensaje Tema: Macro para eliminar fila especificando cual
    Enviado: 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!!
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5970
Enlace directo a este mensaje Enviado: 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.
Arriba
Beatrix Ver desplegable
Nuevo
Nuevo


Unido: 18/Enero/2020
Localización: MAdrid
Estado: Sin conexión
Puntos: 3
Enlace directo a este mensaje Enviado: 20/Enero/2020 a las 10:10
Muchisimas gracias!!!
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable