Buenas noches:
Una consulta , tengo esté codigo:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each celda In Target
If Not Application.Intersect(celda, Range("B32:U1000")) Is Nothing Then
celda.Interior.Color = vbYellow
End If
Next
End Sub
El cual esta en el código de la hoja de calculo, pero que cambios se deberia hacer para volverle a código macro? o sea poder ejecutarlo desde un boton.
Gracias
Jesús
Cambia el nombre. En vez de llamarle
Private Sub Worksheet_Change(ByVal Target As Range)
Sub Mifuncion(ByVal Target As Range)
Gracias por la respuesta, pero no llama a la macro, no aparece en mi lista de macros para poder agregarle a un boton
saludos
Jesús
Jesus Martinez Plantarosa
Si le has quitado la palabra "private" debería verse. De todas maneras, prueba a hacer un paso más: Donde viene la palabra "private" sustitúyela por "public" y luego termina la definición de la función. Prueba entonces si se puede llamar a la macro para asignarla al botón.
Un saludo
Hola a ambos.
Cuando un procedimiento/macro tiene argumentos, no aparece en la lista de macros, porque desde la lista de macros no se puede dar valor a esos argumentos. En este caso hay un argumento Target en la definición de la macro.
En el evento WorksheetChange Target es el rango que cambia, pero al ejecutar tu macro, ¿qué es Target?
tal vez deberías adaptar tu macro para que se ejecute con la selección o algo parecido
------
Ya sé Excel, pero necesito más.
Gracias por la respuesta pero negativo no funciona :(
Jesus Martinez Plantarosa
Estimado Pacomegia, ayuda por favor, como haria mis cambios para que mi macro funcione??
saludos cordiales
Jesús
Jesus Martinez Plantarosa
Muy buena, Paco. Esa no me la sabía.
Jesús: he hecho lo siguiente:
He declarado la función dentro de 'Hoja 1' y no en ningún módulo (aunque se podría hacer con alguna variación):
Sub FuncionFuncionando()
Dim celda As Range
For Each celda In Selection
If Not Application.Intersect(celda, Range("B32:U1000")) Is Nothing Then
celda.Interior.Color = vbYellow
End If
Next
End Sub
Estimado Cron, marca pero solo cuaneo ejecuto la macro y en la celda activa, lo que yo realizo es copiar de otra hoja de otro libro un resumen de ventas a otra hoja, y bueno una vez copiado quiero ejecutar la macro para que cualquier cambio que realize en ese rango de datos los pinte de amarillo, asi yo sabre que datos fueron modificados, desde ya muchas gracias por tu atención.
Saludos cordiales
Jesús
Jesus Martinez Plantarosa
Bueno, yo no toqué el código, simplemente adapté la función para que se ejecute desde un botón. La función es la que pusiste al principio.
La pregunta es la siguiente: ¿Cómo sabe Excel que se ha modificado una celda? ¿Guardas en algún sitio la distribución original antes de copiar los nuevos datos?
Si es así, te bastaría con un formato condicional bien programado. No recomiendo una comparación celda a celda vía código, porque puede ser desesperantemente lento.
Un saludo
Y como seria el condicional? o sea yo copio de mi hoja original a otra hoja para que revise otra persona, pero lo que quiero es qeu cuando realice cualquier modificación en los datos, estos se pinten de fondo amarillo.
Gracias
Un abrazo
Jesús
Jesus Martinez Plantarosa