Macro para insertar filas con fórmulas en una hoja protegida

Tengo una hoja de excel protegida donde quiero insertar filas de forma que me copie las fórmulas de las celdas precedentes. He grabado la siguiente macro y funciona a la perfección, pero siempre inserta la fila el B10. Me gustaría que realizara esta acción pero en la fila que le indicara y no siempre en B10.

Sub InsertarFilas()
'
' InsertarFilas Macro
' Insertar filas y copiar formulas
'
' Acceso directo: Ctrl+Mayús+I
'
    ActiveSheet.Unprotect
    Rows("10:10").Select
    Range("B10").Activate
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("D9").Select
    Selection.AutoFill Destination:=Range("D9:D10"), Type:=xlFillDefault
    Range("D9:D10").Select
    Range("H9").Select
    Selection.AutoFill Destination:=Range("H9:H10"), Type:=xlFillDefault
    Range("H9:H10").Select
    Range("I9").Select
    Selection.AutoFill Destination:=Range("I9:I10"), Type:=xlFillDefault
    Range("I9:I10").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowInsertingRows:=True
End Sub

1 respuesta

Respuesta
1

Te pregunto cuando seleccionas cambias la selección de B10, el resultados de los filtros quieres que se hagan en relación al los campos de la macro que realizaste, o esos filtros quedan en esos mismo campos. Me podrías ampliar un poco que quieres hacer con esto para ver su puedo mejorar tu macro.

La macro la grabé utilizando como ejemplo la fila B10, pero necesito que inserte una fila de forma que copie la fórmula de la celda anterior. La inserción de filas sera de forma aleatoria, de modo que no lleva ningún orden concreto, las iré insertanto en cualquier orden, dependiendo de donde necesite insertarla.

He seguido investigando y he encontrado la siguiente macro, que me funciona perfectamente, pero al enviar el excel la macro se deshabilita. ¿Existe algún truco para que la macro siga funcionando aunque la envíe?.

Sub Insertarfilas()

'

' Insertarfilas Macro

'

' Acceso directo: CTRL+i

'

ActiveSheet.Unprotect

    Dim fila As Integer

fila = ActiveCell.Row

If fila < 4 Then

   MsgBox ("Ahi no se puede insertar")

   Exit Sub

End If

Rows(fila).Insert shift:=xlDown

If fila = 4 Then Rows(fila + 1).Copy Else Rows(fila - 1).Copy

Rows(fila).PasteSpecial Paste:=xlPasteAll

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _

        , AllowInsertingRows:=True

End Sub

Gracias y un saludo.

Espero ya tengas una solución, pero te comento tu macro funciona perfectamente para lo que requieres ya la e ensayado y no tiene problema, ahora para llamarla te sugeriría un botón, que lo puedes crear en desarrollador - controles - insertar controles así le asignas la macro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas