Eliminar líneas de factura de productos y subir las siguientes

Tengo este proyecto y necesito macro para botón para eliminar línea(s) de productos ya en factura.

El botón tiene como caption ELIMINAR LÍNEA(S) que esta en la hoja factura

Un problema tengo que, además de eliminar líneas, se necesita que las siguientes suban, ocupen el espacio vacío que queda entre-productos

La solicitud (información) más concreta esta en Hoja1

Dejo enlace al libro

http://depositfiles.org/files/wh1istk2f

1 respuesta

Respuesta
1

Esta macro te permite ir eliminando de a 1 registro por vez. Se controla que se este seleccionando una celda dentro del rango de códigos.

Private Sub btnElimiLinea_Click()
'x Elsamatilde
'se elimina el registro segun la seleccion en col B
If Intersect(ActiveCell, Range("B14:B23")) Is Nothing Then
    MsgBox "Para eliminar un registro debes posicionarte en celda de la col B.", , "ERROR"
    Exit Sub
End If
If Selection.Count > 1 Then
    MsgBox "Solo puedes eliminar 1 registro por vez.", , "ERROR"
    Exit Sub
End If
Application.ScreenUpdating = False
'se inserta 1 fila al final
    Range("B23:F23").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'se copia el formato de bordes
    Range("B22:E22").Select
    Selection.Copy
    Range("B23").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
'se completa la col F con la formula
    Range("F22").Select
    Selection.AutoFill Destination:=Range("F22:F23"), Type:=xlFillDefault
'selecciona el rango col B:F
    Range("B" & ActiveCell.Row & ":F" & ActiveCell.Row).Select
    Selection.Delete Shift:=xlUp
'se posiciona en alguna celda
Range("B14").Select
End Sub

Como no me quedo claro si necesitabas eliminar toda la fila o solo las celdas del registro elegido, opte por lo 2do que cumple con lo solicitado.

No se si estoy haciendo algo incorrecto.

COpie el código que me dejas en la hoja7 para el botón btnElimiLinea existente en dicha hoja7.

Selecciono la línea 3 (o solamente la B15 o desde la B15 hasta C15, D15 Y E15 y no elimina el producto.

¿

Podrías revisar en el libro que dejo?

Gracias Elsa por tu generosidad.

Si toda la fila según la celda en B seleccionada hasta la E.

Por ejemplo; selecciono la celda B15;C15, D15 y E15 y Elimino con la tecla Supr, AUTO MATICAMENTE por la fórmula que tiene la F, esta F también auto-desaparece, la lionea queda en blanco.

Quiero que los datos siguientes a la B15 B16, B17 y subsiguintes (si los hubiera) hasta B23 y sus datos lineales suban pero que se conserven las fórmulas de la columna F (F14 a F23).

A ver si me hice entender

Te estoy enviando tu libro con la macro incluida y probada. Solo debes seleccionar la celda de col B, por ej: B15 y ejecutar el botón.

Si no recibes el libro sera porque no tengo actualizado tu correo, en ese caso escribime solicitándolo.

Sdos!

Gracias Elsa por tu ayuda.

Pues yo seleccionaba la celda B15 y PARECIA que eliminaba algo y agregaba linea pero el producto seguia ahí

Voy y verifico

Aun no me llega ningún adjunto

Me llego si el aviso de tu nuevo mensaje

[email protected] [email protected] y [email protected]

Enviado. Dejo la macro ajustada aquí, contemplando situaciones con rango completo. Comento tema fórmulas Subtotales en mail.

Sdos!

Private Sub btnElimiLinea_Click()
'x Elsamatilde
'se elimina el registro segun la seleccion en col B
If Intersect(ActiveCell, Range("B14:B23")) Is Nothing Then
    MsgBox "Para eliminar un registro debes posicionarte en celda de la col B.", , "ERROR"
    Exit Sub
End If
If Selection.Count > 1 Then
    MsgBox "Solo puedes eliminar 1 registro por vez.", , "ERROR"
    Exit Sub
End If
Application.ScreenUpdating = False
'selecciona el rango col B:F
    Range("B" & ActiveCell.Row & ":F" & ActiveCell.Row).Select
    Selection.Delete Shift:=xlUp
'se inserta 1 fila al final
    Range("B23:F23").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'se copia el formato de bordes
    Range("B22:E22").Select
    Selection.Copy
    Range("B23").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
'se completa la col F con la formula
    Range("F22").Select
    Selection.AutoFill Destination:=Range("F22:F23"), Type:=xlFillDefault
'se posiciona en alguna celda
Range("B14").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas