Mi pregunta es la siguiente... Como puedo hacer que una macro se ejecute automáticamente desde una función condicional por ejemplo... "=SI(PREGUNTA,MACRO,ERROR)" Gracias por todo, saludos...
1 Respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Digamos, en principio que las funciones o fórmulas (en la hoja) no disparan macros. Sin embargo, podrás asociar tal comportamiento a un "evento". Entre los que VBA considera está "Worksheet_Change", el cual evalúa que haya habido un cambio en la hoja. En tal caso convendría que la fórmula devolviese VERDADERO o FALSO (cómo valor lógico, no como texto), pero se puede adaptar la macro según el caso. Es decir la fórmula en, supongamos B4, sería: =SI(<condición>,VERDADERO,FALSO) Nota que no usé comillas en ambas palabras Entonces, con el Editor de Visual Basic selecciona la hoja donde estará la fórmula citada y pega el siguiente código en el panel de la derecha: Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Range("B4").Value = True Then Macro1 End if End Sub Obviamente, puedes cambiar los nombre de Macro1 por el que tenga tu macro, la cual deberá estar en un módulo. Como podrás ver cada vez que la hoja cambie algunos de su datos VBA controlará el estado de esta fórmula y, si fuese VERDADERO ejecutará la macro indicada. Si vuelves a la hoja del VB Editor, tienes un menú descolgable en la parte superior derecha donde podrías seleccionar otros eventos distinto a Change para disparar la macro (ej: Calcular) Esto debería resolver tu pregunta. Si así fuera, agradeceré un comentario y que la finalices. Si no, pregúntame de nuevo. Un abrazo! Fernando "Me lo explicaron y lo olvidé, lo leí y lo entendí, lo hice y lo aprendí". (Considera que la valoración que figura predeterminada es 3/5. Tal vez quieras cambiarla...) En caso contrario, puedes preguntarme nuevamente aclarando qué entendí mal o qué faltó.