Lista desplegable de imágenes, que no consigo tener la hoja protegida

Tengo esta macro de una lista desplegable:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="1"
On Error Resume Next
If Target.Cells = Range("H1") Then
Foto = Range("H1").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("H12:H38")
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

Al volver a la pagina me quita la imagen con esta macro :

Private Sub Worksheet_Deactivate()
Range("H1").Value = Range("E50").Value
End Sub

1º/ Pero necesito proteger la hoja y no puedo lograrlo
2º/ Si le pongo, ActiveSheet.Protect Password:="1", cuando vuelvo no me quita la imagen.

1 respuesta

Respuesta
1

Cambia tus macros por estas:

Private Sub Worksheet_Activate()
    On Error Resume Next
    ActiveSheet.Unprotect Password:="1"
    Application.ScreenUpdating = False
    Me.Shapes("foto_del").Delete
    Range("H1").Value = ""
    Application.ScreenUpdating = True
    ActiveSheet.Protect Password:="1"
End Sub
'
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H1")) Is Nothing Then
        Application.ScreenUpdating = False
        On Error Resume Next
        ActiveSheet.Unprotect Password:="1"
        Foto = Range("H1").Value & ".jpg"
        ruta = ActiveWorkbook.Path & "\fotos\" & Foto
        Me.Shapes("foto_del").Delete
        Set fotografia = Me.Pictures.Insert(ruta)
        With Range("H12:H38")
            Arriba = .Top
            Izquierda = .Left
            Ancho = .Width
            Alto = .Height
        End With
        With fotografia
            .Name = "foto_del"
            .Top = Arriba
            .Left = Izquierda
            .Width = Ancho
            .Height = Alto
        End With
        Set fotografia = Nothing
        Application.ScreenUpdating = True
        ActiveSheet.Protect Password:="1"
    End If
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas