Problema con macro y protección de celdas

Saludos, tengo un módulo en excel asociado a un botón que "autorellena" varias celdas, además tengo que bloquear y ocultar otras celdas, el problema es que cuando protejo la hoja no funciona el botón, quiero saber como hago para que la macro funcione protegiendo la hoja, o como puedo hacer para "autorellenar" o repetir la información de una fila en varias filas con fórmula.
A continuación el módulo que repite las filas:
Sub CargarItem()
 Dim C As Range
      ' Localizar primer columna vacía
    For Each C In Worksheets("57 b gral").Range("A:E")
        If C.Column = 1 And C.Value = "" Then
            Exit For
        End If
    Next C
    ' Pega Valores
    C.Offset(0, 0).Value = Range("A2").Value
    C.Offset(0, 1).Value = Range("B2").Value
    C.Offset(0, 2).Value = Range("C2").Value
    C.Offset(0, 3).Value = Range("D2").Value
    C.Offset(0, 4).Value = Range("E2").Value
    Set C = Nothing
End Sub
Sub CargarItem()
Dim C As Range
' Localizar primer columna vacía 
For Each C In Worksheets("57 b gral").Range("A:E")  
If C.Column = 1 And C.Value = "" Then
   Exit For
End If 
Next C
    ' Pega Valores 
 C.Offset(0, 0).Value = Range("A2").Value
 C.Offset(0, 1).Value = Range("B2").Value
 C.Offset(0, 2).Value = Range("C2").Value  
 C.Offset(0, 3).Value = Range("D2").Value
C.Offset(0, 4).Value = Range("E2").Value
    Set C = Nothing
End Sub
Agradezco su atención.

1 respuesta

Respuesta
1
Si no te entendí mal lo que quieres es tener la hoja protegida
con este código cuando lo ejecutas te desproteje la hoja y al finalizar el código te la protege
Sub CargarItem()
  ActiveSheet.Unprotect
 Dim C As Range
      ' Localizar primer columna vacía
    For Each C In Worksheets("57 b gral").Range("A:E")
        If C.Column = 1 And C.Value = "" Then
            Exit For
        End If
    Next C
    ' Pega Valores
    C.Offset(0, 0).Value = Range("A2").Value
    C.Offset(0, 1).Value = Range("B2").Value
    C.Offset(0, 2).Value = Range("C2").Value
    C.Offset(0, 3).Value = Range("D2").Value
    C.Offset(0, 4).Value = Range("E2").Value
    Set C = Nothing
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Por otro lado si pegas este código en tu hoja cada vas que introduzcas datos en E2 el código se ejecuta solo
'llama macro
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$E$2" And Target.Value <> "" Then
CargarItem
End If
End Sub
Ya me cuentas si era eso lo que necesitabas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas