Ejecutar macro al cambiar valor en celda

Tengo una hoja donde en la celda K5 tengo una validación de datos, que me permite acceder a una lista donde puedo entre los meses del año (enero, febrero... Hasta diciembre).
Lo que necesito saber es como al seleccionar un valor distinto al que tengo en la celda K5 se ejecute automáticamente la siguiente macro:
Private Sub worksheet_selectionchange(ByVal target As Range)
If target.Address = "$d$6" Then ' si cambia la celda d6 que es el numero del mes seleccionado
Selection.AutoFilter Field:=2, Criteria1:="=" & Range("d6") '
Range("k5").Select
End If
End Sub
Creo que el problema lo tengo en la primer linea:
Private Sub worksheet_selectionchange(ByVal target As Range)
Porque lo demás lo hice con el grabador de macros, y ejecutando el código manualmente, me funciona.
Espero me puedan ayudar. Si no he sido muy claro con la explicación puedo enviar un archivo si me indican un e-mail
1

1 respuesta

Respuesta
3
La rutina que evalúa los cambios de meses tiene que colocarse en el evento CHANGE de la hoja:
Private Sub Worksheet_Change()
If target.address = "$K$5"  Then    'evalúa tu selección del mes
'y a partir de aquí tus instrucciones
Hola Elsa
Me sale el siguiente error:
Error de compilación:
La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre
Queda resaltada la linea que dice:
Private Sub Worksheet_Change()
Gracias tu ayuda
Una aclaración:
Lo que aparece resaltado es:
Private Sub Worksheet_Change
Sin los paréntesis
Gracias
Porque tenés que completar la línea del Change... (me faltaron los puntos suspensivos)
Hola Elsa
Bueno la macro ya no da el error; pero no funciona.
En la celda k5 es donde selecciono el mes de una lista por medio de validación de datos.
en la celda d5 tengo una formula que es: =buscarv(k5;a4:b15;2;0)
De donde la columna a es donde están los meses en letra (enero, febrero...)
La columna b es donde hay un numero que equivale al mes (1, 2...)
Si por ejemplo en k5 elijo marzo, en d5 me sale un 3; pero no pasa nada, es decir que no me da los resultados en el autofiltro.
Ahora si yo pulso el botón que he llamado "buscar mes", entonces si me da los resultados.
La macro de este botón es:
Private Sub CommandButton1_Click()
Selection.AutoFilter Field:=2, Criteria1:="=" & Range("d5")
Range("k5").Select
End Sub
Y la macro que se ejecuta, o se deberia ejecutar al elegir otro valor en la celda k5 es:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$k$5" Then ' si cambia la celda k5
Selection.AutoFilter Field:=2, Criteria1:="=" & Range("d5")
Range("k5").Select
End If
End Sub
Es como si no notara el cambio en la celda k5 y no ejecutara la macro
Muchas gracias por tu ayuda
Porque la referencia que va entre comillas debe ir en mayúsculas: "$K$5"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas