Macro para borrar filas me da error al cancelar

Hola, he estado destrozando algunas lineas de programación de otra gente, porque busco una que me borre cualquier fila que yo desee, eso si solo desde la columna "A" a la "E".
En este mismo foro encontré estas:
Dim myrango As String 
Dim fila As Long 
fila = InputBox("DIME QUE FILA QUIERES BORRAR", "NUMERO DE FILA", 1) 
myrango = "B" & fila & ":F" & fila & "" 
If MsgBox("Realmente quieres borrar la fila numero " & fila & "", vbYesNo) = 6 Then 
Range(myrango).Select 
Selection.ClearContents 
End If
Que cambiando la "F" por una "E" va de fabula, sin embargo si en el inputbox que aparece quiero cancelar la operación, me sale error 13, he buscado pero no veo el problema.
A continuación puse este código para que ordene las filas y no quede ninguna vacía en medio,
Range("A17:F3000").Select
    Selection.Sort Key1:=Range("B17"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        Range("A17").Select
He puesto "F3000", porque no se como poner valor infinito, siendo el rango de inicio "A17".
Espero vuestra ayuda gracias.
Un saludo.

1 respuesta

Respuesta
1
Para la primer parte de la consulta, la rutina te debe quedar así:
Sub borrando()
Dim myrango As String
Dim fila As Long
On Error GoTo errando
fila = InputBox("DIME QUE FILA QUIERES BORRAR", "NUMERO DE FILA", 1)
myrango = "B" & fila & ":F" & fila & ""
If MsgBox("Realmente quieres borrar la fila numero " & fila & "", vbYesNo) = 6 Then
Range(myrango).Select
Selection.ClearContents
End If
Exit Sub
errando:
End Sub
Con esto solo estás borrando las celdas. no eliminandolas.
Entonces necesitaras establecer la col que sí tendrá datos en todas las filas para así obtener la última del rango. Supongamos que sea la A, entonces tu 2da rutina quedará:
ulti=Range("A65536").end(xlup).row

Range("A17:F" & ulti).Select
    Selection.Sort Key1:=Range("B17"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        Range("A17").Select
Si todo quedó aclarado, no olvides finalizarla

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas