Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sintomi
Quando si calcola il foglio di lavoro, alcune celle potrebbero avere calcolato il valore errato.
Causa
Questo problema si verifica in presenza delle seguenti condizioni:
Una cella del foglio di lavoro contiene una funzione personalizzata.
La funzione personalizzata contiene uno o più argomenti che fanno riferimento a un intervallo di celle nel foglio di lavoro.
Il risultato della funzione personalizzata dipende da più celle rispetto a quelle a cui fa riferimento direttamente.
Questo comportamento è previsto dalla progettazione di Microsoft Excel. Quando excel calcola la cella contenente la funzione personalizzata, ricalcola tutti gli intervalli di celle passati come argomenti alla funzione personalizzata. Se il risultato della funzione dipende da celle a cui la funzione non fa riferimento in modo esplicito, è possibile che tali celle non vengano ricalcolate.
Soluzione alternativa
Per risolvere questo problema, usare uno dei metodi seguenti.
Metodo 1: Modificare la funzione in modo che vengano passati tutti gli intervalli di celle pertinenti
Modificare la funzione in modo che accetti come argomenti tutte le celle necessarie per calcolare il risultato della funzione.
Metodo 2: rendere volatile la funzione personalizzata
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici del supporto tecnico Microsoft possono spiegare le funzionalità di una particolare procedura, ma non modificheranno questi esempi per fornire funzionalità aggiuntive o procedure di costruzione per soddisfare i requisiti specifici. Se si rende volatile la funzione personalizzata, questo problema non si verificherà. Per rendere volatile la funzione personalizzata, aggiungere la riga di codice seguente alla funzione .
Application.Volatile
Nota
Se si rende volatile la funzione personalizzata, la funzione personalizzata verrà ricalcolata ogni volta che si apporta una modifica a un valore o si ricalcola una cartella di lavoro aperta. Ciò potrebbe influire sulle prestazioni del modello del foglio di lavoro.
Metodo 3: Forzare Excel a ricalcolare tutte le cartelle di lavoro aperte
Premere CTRL+ALT+F9 per ricalcolare i valori in tutte le cartelle di lavoro aperte. In Microsoft Office Excel 2007 premere CTRL+ALT+MAIUSC+F9 per ricalcolare i valori in tutte le cartelle di lavoro aperte.
Ulteriori informazioni
Esempio del problema
Per illustrare questo problema, seguire questa procedura:
Chiudere e salvare le cartelle di lavoro aperte e quindi aprire una nuova cartella di lavoro.
Avviare visual basic Editor (premere ALT+F11).
Nel menu Inserisci, fare clic su Modulo.
Nel modulo digitare il seguente codice:
' This function counts the number of blank cells by starting from the cell ' referred to by the rngStartCell argument and moving up the column. Function FindTextUp(rngStartCell As Range) As Single Dim iIndex As Integer For iIndex = 0 To 100 If rngStartCell.Value <> "" Then FindTextUp = iIndex Exit Function Else Set rngStartCell = rngStartCell.Offset(-1, 0) End If Next iIndex End Function
Premere ALT+F11 per tornare a Excel.
Digitare Test nella cella A2 e quindi premere INVIO.
Digitare la formula seguente nella cella A10 e quindi premere INVIO:
=FindTextUp(A9)
La formula restituisce un valore pari a 7.
Digitare Another test nella cella A5 e quindi premere INVIO.
La formula restituisce comunque un valore pari a 7, quando è previsto un valore pari a 4. In questo esempio, la funzione FindTextUp fa riferimento in modo esplicito alla cella A9. Tuttavia, la funzione può dipendere dalle celle A1:A8, a seconda dei dati immessi nel foglio di lavoro.
Se si implementa il metodo 1 nella sezione "Soluzione alternativa" di questo articolo, la funzione calcolerà il risultato previsto. La riga di codice seguente illustra come modificare la funzione in questo esempio in modo che venga calcolato il risultato previsto.
Function FindTextUp(rngStartCell As Range, rngOtherCells As Range) As Single
A questo punto, se si sostituisce la chiamata di funzione nel passaggio 7 con la chiamata di funzione seguente, la funzione restituirà sempre il risultato previsto.
=FindTextUp(A9,A1:A8)