Borrar fila e Insertar nueva

Hola necesito una macro que me borre la fila que yo seleccione, estas van a ser las filas que se encuentran entre la fila 6 y 34, porque en la fila E36 tengo una celda con una fórmula que es la siguiente =SUMA(E6:E34))., por eso cuando yo borro la fila por ej 12 la borra pero en la celda donde suma no dice E6:E34, dice E6:E35, por eso le agregue a la macro que me inserte una fila en blanco dentro del rango de las filas 6 y 34 para mantener la fórmula, ejemplo pido que borre la fila 23, bien, la borra e inserta una nueva, la macro anda perfecto, ahora lo que quiero es que si borro la fila 22, caiga luego en la fila 23 y así sucesivamente, el problema es que si ven la macro que hice vuelve a luego de insertar una fila en blanco a la celda A6 y de ahí debo partir devuelta.
Yo envío la macro que hice, que la grave, solo necesito que parta de la fila siguiente de la que borre, es decir si borre la fila 14 que caiga a la fila 15, ¿no qué vuelva a la fila 6
se entendió más o menos?
Mando la macro
BorrarFilaInsertarNueva Macro
' Macro grabada el 04/02/2008 por Valeria
'
' Acceso directo: CTRL+z
'
Selection.Delete Shift:=xlUp
Rows("54:54").Select
Selection.Insert Shift:=xlDown
Range("B53").Select
Selection.AutoFill Destination:=Range("B53:B54"), Type:=xlFillDefault
Range("B53:B54").Select
Range("D53").Select
Selection.AutoFill Destination:=Range("D53:D54"), Type:=xlFillDefault
Range("D53:D54").Select
ActiveWindow.ScrollColumn = 2
Range("E53").Select
Selection.AutoFill Destination:=Range("E53:E54"), Type:=xlFillDefault
Range("E53:E54").Select
Range("E56").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-50]C:R[-2]C)"
Range("E57").Select
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 36
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("A6").Select
End Sub

1 respuesta

Respuesta
1
No entiendo para que todo eso, pero lo que me parece es que necesitas más bien que te borre un rango si lo que quieres es que te borre el contenido de la fila en la que te encuentras debes sustituir todo ese código por cualquiera de las dos opciones
Opción 1: Para que te borre un rango sin eliminar las filas
Range("A" & ActiveCell.Row, "G" & ActiveCell.Row).ClearContents
* Te borrará el contenido del el rango A hasta G de la fila en la que te encuentres
Opción 2: Para que te borre la fila en la que te encuentres
ActiveCell. Cells. EntireRow. ClearContents
* No elimina la fila, solo el contenido
Esto ya sería una monería que igual y te sirve, si quieres que después de realizar alguna de las opciones te active una de las celdas en específico de la misma fila, entonces agrega después del código de la opción que hayas elegido:

Cells(ActiveCell. Row, 2). Activate
* En este caso te activa la celda 2 de la misma columna
Visita http://gregorio.aleux.com encontrarás algo que te ayude.
Sin más...
Hola experto gracias por contestarme, recién hoy pude enviarte mi respuesta, ya que la página no funciona bien y me marcaba error, lo que necesito es que elimine la fila y caiga en la siguiente y me agregue una fila en blanco por la que elimine todo esto sin que se modifique la fórmula, te paso a explicar más detalladamente, yo lo uso para facturar, de la fila 6 a la 34 tengo los artículos que me pidieron, en la celda e36 tengo la suma de todos los artículos, es decir el total de la factura, pasa que a veces no vienen todos los artículos y yo ya tengo todo facturado, entonces con esta macro lo que hago es borrar la fila del articulo que no vino, si lo borro y no elimino la fila, me queda una fila en blanco y si la elimino la celda e36 se modifica y en vez de sumar e6:e34 me suma e6:e35 porque elimien la fila, entonces lo que hice fue crear esta macro que la grabe siguiendo los pasos siguiente, yo manualmente selecciono la fila y aprieto alt+letra y la elimina / luego agrego una fila abajo de todo(que seria la que reemplzaria a la que elimine) / luego voy a la celda e36 y vuelvo a poner e6:e36, pero el problema viene que vuelvo a empezar desde la primera fila y yo lo que quiero es si borre la fila 12 pase a la 13 y así sucesivamente, espero haberme explicado bien
Saludos
Sustituir todo el código que tienes por este
' Esta línea te elimina la fila en la que te encuentras, _
por tanto quedas automaticamente en la fila que sigue
ActiveCell.Cells.EntireRow.Delete
' Esta otra línea lo que hace es seleccionar la fila que sigue _
En la misma columna en la que te encontrabas
Cells(ActiveCell.Row+1, ActiveCell. Column). Activate ' Esta otra te
Creo que la segunda línea no es necesaria pero, creo que no te acabo de entender, Suerte
Hola experto, gracias nuevamente, la macro que me enviaste anda perfecto, borra la fila y cae en la siguiente, pero me falta una cosa más, se que es complicado entenderlo porque uno no lo ve, pero yo esa macro la uso mucho, el tema es así, yo borre la fila pero tengo que insertar una una fila en donde las celdas tengan las misma funciones de suma y de buscar, entre las filas e6 y e54, a ver si me explico mejor, entre la fila e6 y e54 tengo la facturación, por ej un cliente me pidió 10 productos bueno yo lo facture de antemano, pero por ej el producto 5 no vino, entonces yo borro esa fila donde esta ese producto porque no se lo envío, ahora la celda e56 me suma la columna e6:e54, si yo borre esa fila se modifica esta función y pone e6:e53 y si borro otra pone e52 y así sucesivamente, ¿entonces lo que necesito ahora es insertar una nueva fila debajo de todo que tenga las mismas funciones de las celdas que se encuentran entre la e6 y e54 que si borre una fila no sera e54 sino e53 y así no se modifica la celda e56. yo te podría mandar el archivo así me entendés mejor? Y a donde te lo puedo enviar
Gracias experto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas