Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[vba] gestire divisione per 0

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[vba] gestire divisione per 0

Postdi ramset64 » 20/10/10 13:05

Ciao,
ho un foglio in cui vi sono moltissimi calcoli, spesso mi trovo a dover gestire il fatto di avere una 0 al denominatore con conseguente errore di vba e quindi sono costretto di volta in volta a verificare se ciò che si trova al denominatore sia uguale a 0 per evitare l'errore.... esempio.

if cum2 <>0 then
x = cum1/cum2
else
cum1=0

questo ovviamente per ogni calcolo ove vi sia la possibilità di avere 0 al denominatore.
Come posso evitare?

esiste un modo per verificare direttamente se l'istruzione in neretto da errore o meno?

ciaooo
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [vba] gestire divisione per 0

Postdi maxmula » 20/10/10 14:38

Credo che potrenno esserti utili wueste due funzioni:
    ERRORE.TIPO(Indirizzo)
    NON.DISP()

La prima ha valore #N/D se l'operazione che viene eseguita all'indirizzo puntato ha un valore reale, se invece è qualcosa tipo !DIV0, assume valore numerico (ad esempio, per la divisione per zero, assume valore 2)

La seconda ti serve se vuoi controllare che il contenuto della cella sia #N/D oppure no.
Esempio:
Codice: Seleziona tutto
 = SE (C2=NON.DISP;"BUONO";"NO BUONO")

verifica che il risultato che è scritto in C2 sia un valore lecito.

Nelle celle che ospitano i risultati delle divisioni, ad esempio, puoi mettere una formula del genere:
Codice: Seleziona tutto
=SE (ERRORE.TIPO (B2/C2)=NON.DISP;B2/C2;"")


In questo modo, al posto di !DIV0 visualizzerai una cella vuota

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [vba] gestire divisione per 0

Postdi ramset64 » 20/10/10 18:05

Grazie max ma pare che con vba non sia cosi semplice e poi gli errori possibili sono più di un tipo, ci vorrebbe qualcosa di più generico ma non credo esista.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] gestire divisione per 0

Postdi Anthony47 » 20/10/10 22:52

Potresti crearti una Function da usare in sostituzione dell' operatore "/"; ad esempio:
Codice: Seleziona tutto
Function Divz(Numerat, Denominat)
If Denominat = 0 Then
Divz = CVErr(xlErrDiv0): Beep: Exit Function
End If
Divz = Numerat / Denominat
End Function

Poi invece di scrivere x = cum1/cum2 scriverai
Codice: Seleziona tutto
X=Divz(cum1, cum2)

Il codice della function che ti ho scritto e' solo un esempio, e in caso di denominatore pari a Zero restituisce l' errore Div!0 e fa beep; probabilmente in questi casi tu invece vorrai fare qualcosa di particolare, che quindi codificherai all' interno della If.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[vba] gestire divisione per 0":


Chi c’è in linea

Visitano il forum: raimea e 18 ospiti