Tengo una macro que me elimina en orden descendente, como hacerlo en cualquier orden

Para ElsaMatilde: Hola esta es la macro de la pregunta anterior:

Private Sub CommandButton4_Click()
Dim wss As Worksheet
Dim eFila As Long
Set wss = Worksheets(6)
eFila = wss.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If eFila > 3 Then
Rows(eFila - 1 & ":" & eFila - 1).Delete
Else
MsgBox "No hay mas filas para borrar"
End If
End Sub

1 Respuesta

Respuesta
1

Qué bien, trabajaré sobre ésta consulta. Finaliza entonces la otra así seguimos en una sola entrada.

Según comentas: 'lo que quiero es que yo pueda seleccionar el registro y eliminarlo en cualquier orden...'

Entonces, la macro quedaría así y se ejecuta luego de que hayas seleccionado el registro. Podes incluir la selección en la misma rutina, en ese caso iría antes de la línea: eFila = AciveCell. Row

Private Sub CommandButton4_Click()
Dim wss As Worksheet
Dim eFila As Long
Set wss = Worksheets(6)
'se trata de la celda previamente seleccionada
eFila = ActiveCell.Row
'se asegura de que no se elimine ninguna de las 3 1ras filas
If eFila > 3 Then
ActiveCell.EntireRow.Delete
Else
MsgBox "No puedes eliminar las filas 1 a 3"
End If
End Sub

Hola buenos días, no me funciona, osea no esta eliminando con la nueva modificación, la estoy colocando asi:


Private Sub CommandButton4_Click()
Dim wss As Worksheet
Dim eFila As Long
Set wss = Worksheets(6)

eFila = ActiveCell.Row
If eFila > 3 Then

ActiveCell.EntireRow.Delete

Else
MsgBox "No hay mas filas para borrar"
End If
End Sub

Usted me dirá si es que no estoy colocando el código como es. Gracias por su colaboración

Claro, estás definiendo la hoja 6 pero no la estás seleccionando... si necesitas eliminar alguna fila de esa hoja habría que seleccionarla salvo que ya esté activa.

TAmpoco sé cuándo seleccionas la celda y de qué hoja se trata.

Insisto con tu comentario: 'lo que quiero es que yo pueda seleccionar el registro y eliminarlo en cualquier orden...' y ese es el pto que no me explicas cómo lo haces.

Quedo a la espera de tus aclaraciones.

hola, disculpe tiene usted razón, le confirmo que si estoy definiendo es la hoja 6 porque es la hoja6 que estoy trabajando, bueno la he seleccionando de esta forma colocándole esta linea: "Sheets("hoja6").Select", pero no me esta funcionando. Actualmente Lo que hace la macro es selecciona la ultima celda y empieza a eliminar de abajo hacia arriba, y lo que yo quiero hacer es que pueda seleccionar el registro y eliminarlo, en cualquier orden, sea el primero o el ultimo o el del centro, cualquiera que yo seleccione y pueda eliminarlo. Muchas gracias por su ayuda.

No se le está indicando aún a la macro la selección de la celda. Se desprende de tus comentarios que ya la tenés 'de algún modo' seleccionada:

Lo que yo quiero hacer es que pueda seleccionar el registro...

¿Pero cómo sabrá Excel de qué registro se trata?

Enviame las aclaraciones con el formulario donde estará este botón y la hoja 6.

Sdos!

hola buenos días,le quiero mostrá este código que si me permite seleccionar y eliminar el registro que yo elija, es el siguiente:

Private Sub CommandButton4_Click()
Application.ScreenUpdating = False
If ListBox1.ListIndex < 0 Then
MsgBox "Selecciona un Registro para borrar", vbCritical, "ATENCIÓN"
Exit Sub
End If
'fila de fecha
b = ListBox1.ListIndex + 2
'valor de la placa
fecha = ListBox1.List(ListBox1.ListIndex, 0)
'borra fila
Sheets("Hoja6").Rows(b).Delete
Sheets("Hoja6").Select
Sheets("Hoja6").Cells.Replace "=", "="
'Sheets("Hoja6").Select
Application.ScreenUpdating = True
MsgBox "Registro borrado con éxito", vbInformation, "Fin del Recordatorio"
End Sub

Le quiero pedir el favor y me explica como hacer para que cuando la celda este en vacía o la hoja no contenga registros, pueda mandarme un mensaje que diga que ya no existen mas registros para eliminar, no lo he podido hacer, favor ayúdeme con esto. Muchas gracias por su apoyo.

Ah bueno, ahora si se vé la selección de la celda (¿xq no lo escribiste antes? )

Bien, sabemos entonces que la fila dependerá de la selección de un elemento del listbox y la llamaste 'b'... pero 'b' es un nro de fila, entonces la celda puede ser de cualquier col que como no lo indicas lo asumiré como col A.

A partir de este comentario, siguen las instrucciones:

'borra fila

If sheets("Hoja6").range("A" & b) = "" then

Msgbox "NO hay datos en esta fila para eliminar"

Else

Sheets("Hoja6").RAnge("A" & b).EntireRow.Delete

'aquí siguen tus instrucciones

Sheets("Hoja6").Select 'para qué la seleccinas??
Sheets("Hoja6").Cells.Replace "=", "="
Application.ScreenUpdating = True
MsgBox "Registro borrado con éxito", vbInformation, "Fin del Recordatorio"
End If

End Sub

Sdos

Elsa

PD) ültimos días para aprovechar las promociones del año!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas