Ti ringrazio molto per il tuo aiuto.
Purtroppo però non mi risolve il problema nessuna delle due soluzioni

(
La prima soluzione è quella che uso attualmente in realtà.
Nel senso che la macro VBA di calcolo lavora correttamente a patto che tutti i fogli da cui leggere i dati siano aperti. Il problema è che il numero di fogli da cui devo leggere cresce dinamicamente. Adesso sono 4 ma dovrò a regime leggere da ben 30 fogli

.
Attualmente utilizzo l'oggetto Workbooks(<nome_foglio>) per fare riferimento al foglio, l'oggetto Worksheets(<nome_sheet>) per fare riferimento allo sheet, e l'oggetto Range(<celle>) per fare riferimento all'area da cui voglio leggere. Però, come detto, tutto funziona se i folgi sono tutti aperti.
La seconda soluzione, invece, non va bene perché la Macro deve eseguire diverse operazioni sui fogli, tra cui una ricerca, una confronto, una lettura condizionata e alla fine il calcolo.
Quindi non posso riassumere tutto in una funzione Excel come nel tuo esempio per la funzione "sum". Spero di essere stato chiaro

).
Esisterà il modo per agire su un foglio chiuso come se fosse "aperto"??