Ordine funzioni chiamate da excel



  • Ordine funzioni chiamate da excel
    di riavulill (utente non iscritto) data: 22/03/2013 11:16:46

    Ciao a tutti,
    ho costruito un foglio excel con 3 celle che chiamano 3 funzioni di calcolo scritte in codice vba.
    Non riesco a capire che criterio segue excel vba per decretare l'ordine con cui far partire il calcolo delle funzioni.
    Mi spiego meglio.
    Funzione 1 su cella 1: effettua tramite vba un calcolo 1
    Funzione 2 su cella 2: effettua tramite vba un calcolo 2
    Funzione 3 su cella 3: effettua tramite vba un calcolo 3
    Tutte e tre le funzioni di calcolo sono legate alla variazione di un numero presente in una quarta cella.
    Nel momento in cui varia tale numero parte il calcolo attraverso codice.
    Posso decidere l'ordine con cui vba esegue i tre calcoli e quindi l'ordine con cui partono le tre funzioni vba di calcolo?
    Oppure che criterio segue vba per decidere qual è il primo codice a partire?
    Spero di essermi spiegato bene.
    Grazie a tutti




  • di Vecchio Frac data: 22/03/2013 16:20:18

    Le formule immesse come funzioni definite dall'utente sono indipendenti e asincrone, quindi quando viene eseguito il ricalcolo del foglio vengono ricalcolate tutte contemporaneamente... ok, ci sarà qualche lag di pochissimi millisecondi in cui l'interprete dovrà cercare le funzioni, e quindi eseguirle, ma quale partirà per prima non dipende da noi. L'effetto è che tutte e tre vengono eseguite quasi simultaneamente.
    Se hai bisogno di eseguire alcuni calcoli solo dopo che sono stati effettuati altri calcoli (perchè il risultato di questi influenza quelli) allora devi scrivere in una funzione sola i tre calcoli separati ma nell'ordine prescelto.





  • di Vincenzo (utente non iscritto) data: 22/03/2013 16:44:32

    Grazie,
    il problema mi sembra complesso.
    Essendo tre "function" differenti che richiamano codice vba non posso mettere i calcoli in un'unica funzione perchè le "function" escono con un singolo valore e io devo averne tre differenti ovviamente che restituiscono i loro valori a 3 celle.
    Le tre funzioni partono "appaentemente" in maniera simultanea trovandosi sullo stesso foglio ma utilizzando i pallini di "stop" nel codice vba posso vedere chiaramente l'ordine con cui esse vengono percorse.
    Mi sono anche accorto che dopo alcune modifiche ed implementazioni al foglio excel (che non riguardano le tre funzioni) tale ordine è inspiegabilmente cambiato.
    Anche gli eventi del foglio (tipo sheet_calculate o sheet_change) vengono eseguiti solo dopo le funzioni dette e non riesco ad ordinare questi eventi di calcolo...
    Grazie



  • di Vecchio Frac data: 22/03/2013 16:51:48

    cit. " tale ordine è inspiegabilmente cambiato. "
    ---> è l'interprete stesso che si riorganizza il codice in memoria (anche dopo la garbage collection, cioè la pulizia dello spazio lasciato libero dalle variabili inutilizzate).

    Comunque, hai tre function separate e va bene; ma puoi richiamarle da una sub nell'ordine preferito e infine valorizzare le celle con i valori restituiti.