Como Insertar una fila con macros en excel?

No se mucho al respecto.
Tengo un documento donde realice una ficha que ocupo llenar, esta se divide en dos secciones donde la primera mitad a la izquierda tengo unos datos que no se deben de mover y la otra mitad a la derecha ocupo llenar unas tablas. Donde son 7 filas llamadas "componentes" que a su vez conforme las llene se iran sumando N filas mas, ocupo un boton que tenga una macro que me valla insertando o recorriendo una fila a una en cada componente cuando lo ocupe, pero que no afecte la mitad de la izquierda.

1 respuesta

Respuesta
1

Si necesitas 'insertar' filas hacia abajo significa que a continuación hay datos que sí deben correrse hacia abajo. En mi imagen serían las celdas de amarillo.

Entonces estas instrucciones te servirán, solo ajusta la letra de las col a ocupar y el nro de la primer fila, que en mi ejemplo es 2.

Sub INSERTA_FILAS()
'x Elsamatilde
'solo inserta celdas a partir de la última ocupada en col E
finx = Range("E2").End(xlDown).Row + 1
'inserta 3 celdas a partir de la ubicada
Range("E" & finx & ":G" & finx).Insert
End Sub

Con este código se mantiene sin cambios el resto de las col.

Si esto resuelve tu consulta no olvides valorarla. Si no la resuelve coloca una imagen para tomar nota de la ubicación de tus tablas.

Gracias por contestar Elsa.
El codigo funciona, pero solo para el primer componente ya que al momento de agregar una fila, el componente dos cambia de ubicacion y al querer agregar filas en este ultimo las inserta donde no debe de ser.

Y claro, imposible imaginar una tabla de estas características sin verla.

Parece que además las celdas tienen cierto formato, como combinadas. Ya te la preparo.

Sdos!

Gracias, espero tu respuesta.

El uso de botones cuando las celdas se van corriendo no es lo más aconsejable, ya que impide mantener la ubicación de los mismos como así tampoco sus referencias.

Por eso te desarrollé la macro que se ejecutará haciendo doble clic en el título donde necesites agregar filas. Si esto no te resulta comentame cómo se hace el proceso o en qué momento decides que necesitas más filas.

Entonces, en el objeto HOJA donde estén estas tablas debes colocar este código:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'x Elsamatilde
'busco el próximo componente e inserto un rango x encima
'solo se ejecuta en rango AB:AS (col 28)
If Target.Column <> 28 Then Exit Sub
If Left(Range("AB" & Target.Row), 10) <> "COMPONENTE" Then Exit Sub
'si es el 7mo busca fin de rango sino busca el próximo componente
If ActiveCell.Value = "COMPONENTE VII" Then
    filx = Range("AB" & Rows.Count).End(xlUp).Row + 1
Else
    ActiveCell.Offset(1, 0).Select
    While Left(ActiveCell.Value, 10) <> "COMPONENTE"
        ActiveCell.Offset(1, 0).Select
    Wend
    filx = ActiveCell.Row - 1
    Range("AB" & filx & ":AS" & filx).Insert
End If
'copio formato del rango 1 fila x encima
Range("AB" & filx - 1 & ":AS" & filx - 1).Copy
'pega formatos en la nueva fila
Range("AB" & filx).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'se posiciona en la nueva fila
Range("AB" & filx).Select
End Sub

Si tu hoja o celdas tienen alguna otra particularidad  (solo se ven celdas combinadas) debieras enviármela para poder ajustar la macro.

Sdos!

Hola Elsa el codigo si funciona en los primeros 6 'componentes' pero al hacer doble click en el 7mo crea un error y se comienzan a desplazar muchas filas hacia abajo, hasta congelarse la pantalla.

Observa en el código de la macro, si el texto es tal como aparece en tu hoja ... a mí no me da error pero claro, el texto lo puse tal cual en la macro: COMPONENTE VII

Si no encontrás dónde está la diferencia, enviame x favor la hoja para observarla.

Mis correos aparecen en mi sitio.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas