Ejecutar Macro si cambia el valor de una celda

23/10/2008 - 04:28 por PANTELIZ | Informe spam
Quiero ejecutar una macro dependiendo del valor de una celda, el valor
de la celda esta limitado a "oculta" o "visible" desde una validación
en la celda.

cuando seleccione el valor de "visible" debe ejecutar la macro1
Sub Macro1()
'
Rows("17:17").Select
Selection.EntireRow.Hidden = True
End Sub

cuando seleccione el valor de "oculto" debe ejecutar la macro2
Sub Macro2()
'
Rows("17:17").Select
Selection.EntireRow.Hidden = False
End Sub

Agradezco su colaboracion

Preguntas similare

Leer las respuestas

#6 AnSanVal
24/10/2008 - 11:31 | Informe spam
Si tan importante es que funcione con los textos: "Visible" y "Oculta", puedes probar añadiendo a la eficiente solución
de Héctor lo siguiente:

1.- [D21:D25] Formato de celdas>Personalizada ( ;"Visible";"Oculta" ) [sin paréntesis].
2.- Agrega al código de modo que quede:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("d21:d25")) Is Nothing Then
Application.EnableEvents = False
If Target.Value = "Visible" Then Target = -1
If Target.Value = "Oculta" Then Target = 0
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("d21:d25")) Is Nothing Then _
Target.Offset(-14).EntireRow.Hidden = Not Target
End Sub

Saludos: Antonio.
************************************************
"Héctor Miguel" escribió en el mensaje news:
hola, (como sea que te llames), !

... la solucion q encontre: (...) o existe otra mejor.



(p.e.)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("d21:d25")) Is Nothing Then _
Target.Offset(, -14).EntireRow.Hidden = Not Target
End Sub

saludos,
hector.

Respuesta Responder a este mensaje
#7 Héctor Miguel
24/10/2008 - 14:21 | Informe spam
hola, chicos !

(creo que) tambien podrias recortar este codigo modificando la propuesta original +/- a lo siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("d21:d25")) Is Nothing Then _
Target.Offset(, -14).EntireRow.Hidden = Target <> "Visible"
End Sub

solo asegurarse de las (may/min)isculas o cambiar la parte final de la evaluacion +/- a:
LCase(Target) <> "visible"

saludos,
hector.

__ OP __
AnSanVal escribio en el mensaje ...

Si tan importante es que funcione con los textos: "Visible" y "Oculta", puedes probar añadiendo... lo siguiente:

1.- [D21:D25] Formato de celdas>Personalizada ( ;"Visible";"Oculta" ) [sin paréntesis].
2.- Agrega al código de modo que quede:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("d21:d25")) Is Nothing Then
Application.EnableEvents = False
If Target.Value = "Visible" Then Target = -1
If Target.Value = "Oculta" Then Target = 0
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("d21:d25")) Is Nothing Then _
Target.Offset(-14).EntireRow.Hidden = Not Target
End Sub

Saludos: Antonio.

Héctor Miguel escribio en el mensaje ...
hola, (como sea que te llames), !

... la solucion q encontre: (...) o existe otra mejor.



(p.e.)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("d21:d25")) Is Nothing Then _
Target.Offset(, -14).EntireRow.Hidden = Not Target
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida