Como puedo ejecutar Private Sub Worksheet_Change(ByVal Target As Range) con la hoja de excel protegida

Desarrollador de excel

La hoja de excel cuando no esta protegida contra cambios se ejecuta pero cuando se protege la hoja no se activa la tarea

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells = Range("I2") Then
foto = Range("H2").Value
Application.ScreenUpdating = False
foto = foto & ".jpg"
ruta = ActiveWorkbook.Path & "\fotos\" & foto
Me.Shapes("foto_del").Delete
Set fotografia = Me.Pictures.Insert(ruta)
With Range("B1")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With fotografia
.Name = "foto_del"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set fotografia = Nothing
Application.ScreenUpdating = True
End If
End Sub

1 respuesta

Respuesta
1

Realiza lo siguiente.

- Primero, revisa que la celda I2 en Formato de celdas, Proteger, no debe estar bloqueada, para que de esa forma puedas escribir.

- Protege la hoja con algún password

- Al inicio de la macro, tienes que desproteger la hoja

- Al final de la macro, proteges nuevamente la hoja

- Cambia en la macro "abc" por el password que desees.

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells = Range("I2") Then
        ActiveSheet.Unprotect "abc"
        foto = Range("H2").Value
        Application.ScreenUpdating = False
        foto = foto & ".jpg"
        ruta = ActiveWorkbook.Path & "\fotos\" & foto
        Me.Shapes("foto_del").Delete
        Set fotografia = Me.Pictures.Insert(ruta)
        With Range("B1")
        Arriba = .Top
        Izquierda = .Left
        Ancho = .Offset(0, .Columns.Count).Left - .Left
        Alto = .Offset(.Rows.Count, 0).Top - .Top
        End With
        With fotografia
            .name = "foto_del"
            .Top = Arriba
            .Left = Izquierda
            .Width = Ancho
            .Height = Alto
        End With
        Set fotografia = Nothing
        ActiveSheet.Protect "abc"
        Application.ScreenUpdating = True
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

¡Gracias! aun me quedan unas dudas pero me has ayudado bastante 

Puedes solicitar más información, siempre y cuando sea sobre el mismo tema, si ya no tienes dudas sobre este tema apreciaría que cambiaras la valoración a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas