Macro que se ejecute cuando cambia el valor en una celda de otra hoja

"para Dante Amor"

Mi archivo tiene varias hojas las de mi interés son :
Hoja3 (Datos)
Hoja4 (Diagrama)
Necesito que la siguiente macro se ejecute cuando en la hoja Datos se cambie el valor de la celda “D13” la macro se encuentra en la hoja Diagrama. La macro se ejecuta perfecto mientras la celda se encuentre en la misma hoja (Diagrama)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$19" Then
If Range("A19").Value = "Fisicoquímica" Then
ActiveSheet.Shapes("6 Conector recto").Visible = True
ActiveSheet.Shapes("8 Conector recto").Visible = True
ActiveSheet.Shapes("11 Conector recto").Visible = True
ActiveSheet.Shapes("19 Conector recto").Visible = True
ActiveSheet.Shapes("24 Conector recto").Visible = True
ActiveSheet.Shapes("31 Conector recto").Visible = True
ActiveSheet.Shapes("33 Conector recto").Visible = True
ActiveSheet.Shapes("34 Conector recto").Visible = True
ActiveSheet.Shapes("35 Conector recto").Visible = True
ActiveSheet.Shapes("36 Conector recto").Visible = True
ActiveSheet.Shapes("37 Conector recto").Visible = True
ActiveSheet.Shapes("40 Conector recto").Visible = True
ActiveSheet.Shapes("46 Conector recto").Visible = True
ActiveSheet.Shapes("48 Conector recto").Visible = True
ActiveSheet.Shapes("17 Conector recto").Visible = False
ActiveSheet.Shapes("21 Conector recto").Visible = False
ElseIf Range("A19").Value = "Física" Then
ActiveSheet.Shapes("6 Conector recto").Visible = False
ActiveSheet.Shapes("8 Conector recto").Visible = False
ActiveSheet.Shapes("11 Conector recto").Visible = False
ActiveSheet.Shapes("19 Conector recto").Visible = False
ActiveSheet.Shapes("24 Conector recto").Visible = False
ActiveSheet.Shapes("31 Conector recto").Visible = False
ActiveSheet.Shapes("33 Conector recto").Visible = False
ActiveSheet.Shapes("34 Conector recto").Visible = False
ActiveSheet.Shapes("35 Conector recto").Visible = False
ActiveSheet.Shapes("36 Conector recto").Visible = False
ActiveSheet.Shapes("37 Conector recto").Visible = False
ActiveSheet.Shapes("40 Conector recto").Visible = False
ActiveSheet.Shapes("46 Conector recto").Visible = False
ActiveSheet.Shapes("48 Conector recto").Visible = False
ActiveSheet.Shapes("17 Conector recto").Visible = True
ActiveSheet.Shapes("21 Conector recto").Visible = True
Else
ActiveSheet.Shapes("6 Conector recto").Visible = True
ActiveSheet.Shapes("8 Conector recto").Visible = True
ActiveSheet.Shapes("11 Conector recto").Visible = True
ActiveSheet.Shapes("19 Conector recto").Visible = True
ActiveSheet.Shapes("24 Conector recto").Visible = True
ActiveSheet.Shapes("31 Conector recto").Visible = True
ActiveSheet.Shapes("33 Conector recto").Visible = True
ActiveSheet.Shapes("34 Conector recto").Visible = True
ActiveSheet.Shapes("35 Conector recto").Visible = True
ActiveSheet.Shapes("36 Conector recto").Visible = True
ActiveSheet.Shapes("37 Conector recto").Visible = True
ActiveSheet.Shapes("40 Conector recto").Visible = True
ActiveSheet.Shapes("46 Conector recto").Visible = True
ActiveSheet.Shapes("48 Conector recto").Visible = True
ActiveSheet.Shapes("17 Conector recto").Visible = True
ActiveSheet.Shapes("21 Conector recto").Visible = True
End If
End If
End Sub

1 Respuesta

Respuesta
1

H o l a:

Pon la macro, pero en los eventos de la hoja "datos"

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$13" Then
        Set h = Sheets("diagrama")
        If h.Range("A19").Value = "Fisicoquímica" Then
            h.Shapes("6 Conector recto").Visible = True
            h.Shapes("8 Conector recto").Visible = True
            h.Shapes("11 Conector recto").Visible = True
            h.Shapes("19 Conector recto").Visible = True
            h.Shapes("24 Conector recto").Visible = True
            h.Shapes("31 Conector recto").Visible = True
            h.Shapes("33 Conector recto").Visible = True
            h.Shapes("34 Conector recto").Visible = True
            h.Shapes("35 Conector recto").Visible = True
            h.Shapes("36 Conector recto").Visible = True
            h.Shapes("37 Conector recto").Visible = True
            h.Shapes("40 Conector recto").Visible = True
            h.Shapes("46 Conector recto").Visible = True
            h.Shapes("48 Conector recto").Visible = True
            h.Shapes("17 Conector recto").Visible = False
            h.Shapes("21 Conector recto").Visible = False
        ElseIf h.Range("A19").Value = "Física" Then
            h.Shapes("6 Conector recto").Visible = False
            h.Shapes("8 Conector recto").Visible = False
            h.Shapes("11 Conector recto").Visible = False
            h.Shapes("19 Conector recto").Visible = False
            h.Shapes("24 Conector recto").Visible = False
            h.Shapes("31 Conector recto").Visible = False
            h.Shapes("33 Conector recto").Visible = False
            h.Shapes("34 Conector recto").Visible = False
            h.Shapes("35 Conector recto").Visible = False
            h.Shapes("36 Conector recto").Visible = False
            h.Shapes("37 Conector recto").Visible = False
            h.Shapes("40 Conector recto").Visible = False
            h.Shapes("46 Conector recto").Visible = False
            h.Shapes("48 Conector recto").Visible = False
            h.Shapes("17 Conector recto").Visible = True
            h.Shapes("21 Conector recto").Visible = True
        Else
            h.Shapes("6 Conector recto").Visible = True
            h.Shapes("8 Conector recto").Visible = True
            h.Shapes("11 Conector recto").Visible = True
            h.Shapes("19 Conector recto").Visible = True
            h.Shapes("24 Conector recto").Visible = True
            h.Shapes("31 Conector recto").Visible = True
            h.Shapes("33 Conector recto").Visible = True
            h.Shapes("34 Conector recto").Visible = True
            h.Shapes("35 Conector recto").Visible = True
            h.Shapes("36 Conector recto").Visible = True
            h.Shapes("37 Conector recto").Visible = True
            h.Shapes("40 Conector recto").Visible = True
            h.Shapes("46 Conector recto").Visible = True
            h.Shapes("48 Conector recto").Visible = True
            h.Shapes("17 Conector recto").Visible = True
            h.Shapes("21 Conector recto").Visible = True
        End If
    End If
End Sub

La macro se activará cuando modifiques la celda D13 de la hoja "Datos", pero actuará sobre la hoja "diagrama"


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

La  macro funciona muy bien solo realice un cambio en  las condiciones:

If h.Range("A19").Value = "Fisicoquímica" Then

ElseIf h.Range("A19").Value = "Física" Then

por estas

If Range("D13").Value = "Fisicoquímica" Then

ElseIf Range("D13").Value = "Física" Then

asta aquí todo muy bien pero el ultimo Else de mi macro no funciona me podrías decir como corregirlo. Me explico si el valor de "D13" es Fisicoquímica o Física oculta los conectores, el objetivo que pretendo con el ultimo else es que si se quitan estos valores es decir se deja en blanco aparezcan todos los conectores,  al abrir el libro están todos conectores visible al seleccionar una opción de la lista desplegable se ocultan los correspondientes pero si pongo la celda en blanco nuevamente no aparecen todos los conectores quedan solo visible los últimos, la macro quedo como sigue:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$13" Then
        Set h = Sheets("Diagrama")
        If Range("D13").Value = "Fisicoquímica" Then
            h.Shapes("6 Conector recto").Visible = True
            h.Shapes("8 Conector recto").Visible = True
            h.Shapes("11 Conector recto").Visible = True
            h.Shapes("19 Conector recto").Visible = True
            h.Shapes("24 Conector recto").Visible = True
            h.Shapes("31 Conector recto").Visible = True
            h.Shapes("33 Conector recto").Visible = True
            h.Shapes("34 Conector recto").Visible = True
            h.Shapes("35 Conector recto").Visible = True
            h.Shapes("36 Conector recto").Visible = True
            h.Shapes("37 Conector recto").Visible = True
            h.Shapes("40 Conector recto").Visible = True
            h.Shapes("46 Conector recto").Visible = True
            h.Shapes("48 Conector recto").Visible = True
            h.Shapes("17 Conector recto").Visible = False
            h.Shapes("21 Conector recto").Visible = False
            h.Shapes("22 Conector recto").Visible = False
            h.Shapes("23 Conector recto").Visible = False
        ElseIf Range("D13").Value = "Física" Then
            h.Shapes("6 Conector recto").Visible = False
            h.Shapes("8 Conector recto").Visible = False
            h.Shapes("11 Conector recto").Visible = False
            h.Shapes("19 Conector recto").Visible = False
            h.Shapes("24 Conector recto").Visible = False
            h.Shapes("31 Conector recto").Visible = False
            h.Shapes("33 Conector recto").Visible = False
            h.Shapes("34 Conector recto").Visible = False
            h.Shapes("35 Conector recto").Visible = False
            h.Shapes("36 Conector recto").Visible = False
            h.Shapes("37 Conector recto").Visible = False
            h.Shapes("40 Conector recto").Visible = False
            h.Shapes("46 Conector recto").Visible = False
            h.Shapes("48 Conector recto").Visible = False
            h.Shapes("17 Conector recto").Visible = True
            h.Shapes("21 Conector recto").Visible = True
            h.Shapes("22 Conector recto").Visible = True
            h.Shapes("23 Conector recto").Visible = True
        Else
            h.Shapes("6 Conector recto").Visible = True
            h.Shapes("8 Conector recto").Visible = True
            h.Shapes("11 Conector recto").Visible = True
            h.Shapes("19 Conector recto").Visible = True
            h.Shapes("24 Conector recto").Visible = True
            h.Shapes("31 Conector recto").Visible = True
            h.Shapes("33 Conector recto").Visible = True
            h.Shapes("34 Conector recto").Visible = True
            h.Shapes("35 Conector recto").Visible = True
            h.Shapes("36 Conector recto").Visible = True
            h.Shapes("37 Conector recto").Visible = True
            h.Shapes("40 Conector recto").Visible = True
            h.Shapes("46 Conector recto").Visible = True
            h.Shapes("48 Conector recto").Visible = True
            h.Shapes("17 Conector recto").Visible = True
            h.Shapes("21 Conector recto").Visible = True
            h.Shapes("22 Conector recto").Visible = True
            h.Shapes("23 Conector recto").Visible = True
        End If
    End If
End Sub

Muchas gracias por tu tiempo

Saludos!

A mí sí me funciona.

Intenta hacerlo al revés, haces visibles todos y ocultas solamente los que correspondan, por ejemplo:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$13" Then
        Set h = Sheets("diagrama")
        'Se hacen todos visibles
        h.Shapes("6 Conector recto").Visible = True
        h.Shapes("8 Conector recto").Visible = True
        h.Shapes("11 Conector recto").Visible = True
        h.Shapes("19 Conector recto").Visible = True
        h.Shapes("24 Conector recto").Visible = True
        h.Shapes("31 Conector recto").Visible = True
        h.Shapes("33 Conector recto").Visible = True
        h.Shapes("34 Conector recto").Visible = True
        h.Shapes("35 Conector recto").Visible = True
        h.Shapes("36 Conector recto").Visible = True
        h.Shapes("37 Conector recto").Visible = True
        h.Shapes("40 Conector recto").Visible = True
        h.Shapes("46 Conector recto").Visible = True
        h.Shapes("48 Conector recto").Visible = True
        h.Shapes("17 Conector recto").Visible = True
        h.Shapes("21 Conector recto").Visible = True
        h.Shapes("22 Conector recto").Visible = True
        h.Shapes("23 Conector recto").Visible = True
        '
        If h.Range("D13").Value = "Fisicoquímica" Then
            'ocultas los correspondientes
            h.Shapes("17 Conector recto").Visible = False
            h.Shapes("21 Conector recto").Visible = False
            h.Shapes("22 Conector recto").Visible = False
            h.Shapes("23 Conector recto").Visible = False
        ElseIf h.Range("D13").Value = "Física" Then
            h.Shapes("6 Conector recto").Visible = False
            h.Shapes("8 Conector recto").Visible = False
            h.Shapes("11 Conector recto").Visible = False
            h.Shapes("19 Conector recto").Visible = False
            h.Shapes("24 Conector recto").Visible = False
            h.Shapes("31 Conector recto").Visible = False
            h.Shapes("33 Conector recto").Visible = False
            h.Shapes("34 Conector recto").Visible = False
            h.Shapes("35 Conector recto").Visible = False
            h.Shapes("36 Conector recto").Visible = False
            h.Shapes("37 Conector recto").Visible = False
            h.Shapes("40 Conector recto").Visible = False
            h.Shapes("46 Conector recto").Visible = False
            h.Shapes("48 Conector recto").Visible = False
        End If
    End If
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias!  No estuve en la ciudad un rato y no había visto tu respuesta la voy a probar; nuevamente te agradezco el tiempo empleado en la respuesta

Saludos Eduardo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas