Uscita da una condizioni IIF in un calcolo variabile VBA

di il
2 risposte

Uscita da una condizioni IIF in un calcolo variabile VBA

Salve a tutti
Sono in VBA per Access e sto facendo dei calcoli dai dati di una tabella. Ho dei calcoli all'interno di un ciclo DO UNTIL....LOOP Con un contatore che va da 0 a 10

Ho dentro la seguente formula

Spec_Depr_Due_To_Inv(intContatore) = Nz(IIf(Depr_To_Capex_years(intContatore) = 0, 0, IIf((Year_cont(intContatore) < Depr_Start_Date_Year), 0, _
IIf((Year_cont(intContatore) = Depr_Start_Date_Year), ((13 - Depr_Start_Date_Month) / 12) * Nz(DSum("CapEx", "QueryFunzionaleXSomme")) / Depr_To_Capex_years(intContatore), _
IIf(Year_cont(intContatore) > Depr_Start_Date_Year + Depr_To_Capex_years(intContatore), 0, IIf(Year_cont(intContatore) = Depr_Start_Date_Year + Depr_To_Capex_years(intContatore), _
((Depr_Start_Date_Month - 1) / 12) * Nz(DSum("CapEx", "QueryFunzionaleXSomme")) / Depr_To_Capex_years(intContatore), Nz(DSum("CapEx", "QueryFunzionaleXSomme")) / Depr_To_Capex_years(intContatore)))))))


Malgrado la lunghezza, è abbastanza semplice ed ha una serie di IIF annidati. Ora quando il valore Depr_To_Capex_years(intContatore) assume il valore 0 la formula non si ferma e mi da il valore 0 come dice la prima riga, ma continua e mi da errore di DIV/0. Se metto numeri diversi da 0 la formula funziona perfettamente.
Esiste un modo per uscire da ciclo IIf in un determinato momento, del tipo:
IIf(Depr_To_Capex_years(intContatore) = 0, then (o Go To) e farlo uscire dal ciclo e assegnargli il valore 0?


Grazie per la disponibilità
Un saluto

2 Risposte

  • Re: Uscita da una condizioni IIF in un calcolo variabile VBA

    Ciao Stefano,
    nella situazione in cui t trovi ti suggerisco di tradurre se mi passi il termina la tua superIIF con della if ... then ...end if...
    E' praticamente illeggbile procedere in quel modo...
    un saluto.
  • Re: Uscita da una condizioni IIF in un calcolo variabile VBA

    Si, forse è la soluzione migliore. Ho lavorato con quell'IIF pensando che supportasse tutte le funzionalità dell'IF normale.
    Cmq per ora ho risolto il problema definendo un'altra variabile e scrivendo un if iniziale dove questa variabile la pongo uguale a 0,00000000000000000000000001 quando la varibile di interesse è 0, e uguale alla variabile stessa negli altri casi. All'interno della formula ci metto chiaramente la variabile nuova inserita.
    Metodo paraculo, ma funziona...
    Appena avrò tempo di rimetterci le mani sicuramente lo cambierò in un If then annidato. Grazie per il consiglio
    Ciao!
Devi accedere o registrarti per scrivere nel forum
2 risposte