¿Por qué me sale el error 1004 en tiempo de ejecución cuando la hoja esta protegida?

El error que me sale es el siguiente:

Se ha producido el error 1004 en tiempo de ejecución:
Error definido por la aplicación o el objeto

Si la hoja está desprotegida no hay problema, pero cuando la protejo e interactúo con la celda que está utilizando una macro sucede. La macro es la siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$6" Then

Range("f6").Value = Range("f6").Value + Target.Value

End If

End Sub


Perdón por copiarlo así no me aparece la opción pegar.

1 respuesta

Respuesta
1

Tienes que desproteger la hoja en la misma macro, continuar con la macro y volver a proteger tu hoja, así:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$6" Then
        ActiveSheet.Unprotect
            Range("f6").Value = Range("f6").Value + Target.Value
        ActiveSheet.Protect
    End If
End Sub

si pusiste password para proteger la hoja, entonces las instrucciones son así

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$6" Then
        ActiveSheet.Unprotect "tuclave"
            Range("f6").Value = Range("f6").Value + Target.Value
        ActiveSheet.Protect "tuclave"
    End If
End Sub

Saludos.Dante Amor
Si es lo que necesitas.

Gracias, si me sirvió, pero como tengo muchas celdas a las que poner esta macro es medio fastidioso poner eso en cada una de las macros, ¿hay una forma de hacerlo más rapido que estar poniendo eso en cada macro? Con esto cerraría mis dudas

Puedes poner algo así

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
    If Target.Address = "$D$6" Or _
        Target.Address = "$D$7" Or _
        Target.Address = "$E$9" Then
        ActiveSheet.Unprotect "tuclave"
            Range("f6").Value = Range("f6").Value + Target.Value
        ActiveSheet.Protect "tuclave"
    End If
End Sub

Generalmente contesto solamente una pregunta, si la pregunta no tiene que ver con la pregunta original o es más complicada, te pido de favor finalices la pregunta y elabores una nueva por cada petición.

Saludos. Dante Amor

También puedes usar algo así:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
   If Not Intersect(Target, Range("A5, B5, C:C, D10:E18")) Is Nothing Then
        ActiveSheet.Unprotect "tuclave"
            Range("f6").Value = Range("f6").Value + Target.Value
        ActiveSheet.Protect "tuclave"
    End If
End Sub

Con lo anterior, revisas las celdas A5, B5, toda la columna C y el rango de D10 a E18. Úsalo para poner todas tus celdas.

Saludos. Dante Amor
No olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas