Ejecutar una macro al introducir datos en una celda

Hola Calvuch, encantado.. Si es posible me gustaría que me dijeras como puedo hacer los siguiente:
Tengo una macro sencilla que al ejecutarla lo único que hace es poner en la celda seleccionada la fecha actual pero sin cambios a futuro mediante el comando ActiveCell.FormulaR1C1 = Date .........en VB. La macro la he llamado fecha 
La hoja de calculo tiene un rango de D10:D1280, y en cada una de sus celdas existe una lista desplegable (la misma en todas) con unos 10 nombres a seleccionar uno.
Lo que me gustaría hacer y, que no se como, es que en el mismo rango, pero una celda más a la derecha, es decir, E10:E1280 cada vez que despleguemos la lista y elijamos un nombre, se ejecute la macro automáticamente en la celda inmediata a su derecha, es decir en todo el rango E10.. E1281. He probado con algunos otros comandos, que he visto pero no consigo hacerlo ya que casi siempre la macro quedaba sólo vinculada a unas pocas celdas, pero no a tantas.. ¿es posible hacer esto?
Mil Gracias; Pocholino

1 respuesta

Respuesta
1
En rango D10:D1280, dices que existe una lista desplegable, ¿te refieres a un control Activex insertado en cada celda?, pues si es así cada control en si es un objeto independiente, que habría que relacionar a la celda de la derecha, y como objeto ( el control), no guarda referencia de su ubicación ( es decir el objeto "flota" en la hoja).
Para que se invoque el macro de fecha cada vez que seleeciones un nombre hay que servirse del evento Change del objeto ( lista desplegable),
confirma si es el caso o si al decir "lista desplegable", estas utilizando la opción de excel "elegir de lista desplegable", en este último caso podrías servirte del evento change de la hoja y de esta forma tomar la referencia exacta de la ubicación en donde se realiza el cambio.
Se trata de una lista desplegable hecha en excel datos/validación de datos/lista desplegable la cual a partir de un rango de datos se repite en todas las celdas D10:D1281 y lo que querría es que:
-Si despliego la celda D10 y elijo un nombre, ejecute la macro "fecha" y la ponga en la celda E10... y así con D10... D1281 ; E10... E1281.
-Dices de la opción change, quizás sea esa seguro, pero de ahí a componer el ejecutable, ni idea..
Gracias
Ok, ¿esta casi listo
que valor es el que al seleccionar en la lista invocara la acción de poner la fecha en la columna E?, ¿Da igual que valor o depende de un cierto criterio? , ej: si D10=hola entonces E10 =20-10-2010
Quizás no me explique del todo bien, lo que entiendo que me propones es que utilice la función SI( en base a unos argumentos lógicos que puedan dar como resultado la solución en la celda E.. podría por ejemplo hacer
=SI(O(D10="A";D10="B";D10="C";D10="E";D10="F";D10="G");"20-10-2010";"") claro que funcionaría pero de poco me serviría ya que el valor 20-10-2010 de la celda E sería siempre el mismo.
Podría también utilizar
=SI(O(D10="A";D10="B";D10="C";D10="E";D10="F";D10="G");AHORA();"") pero tampoco me valdría ya que todas las celdas tendrían siempre la fecha actual y no la de cuando se introdujo el dato.
Por ello la creo que lo que valdría es la ejecución de la macro que te comente en el primer mensaje mediante DATE que lo que hace es poner la fecha actual y mantenerla como valor absoluto siempre.
Saludos y Gracias
Ahaaaaa, ok tu deseas la fecha en que se introduce el dato, pues bien, que problema, al parecer usted maneja Visual basic, así que en la hoja que vas a trabajar en el evento Sub Worksheet_Change pon esto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row >= 10 And Target.Row <= 1280 Then
    If Target.Column = 4 Then Range("E" & Selection.Row - 1).Value = Date
End If
End Sub
¿Cada vez que se modifica una celda en la columna 4 (D) entre las filas 10 y 1280 pues pondrá el día en la columna E
sera eso?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas