Condividi:        

errore #valore

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

errore #valore

Postdi trittico69 » 02/05/11 13:36

Se in A15 di una cella di excel 2003 c’è questa formula
=SE(A14="";"";SE(A14+1>RIEP!$L$7;"";A14+1))
e in alcuni casi deve comparire una data ma la cella è normalmente vuota
e in AW7 c’è questa formula
=SUPERFESTIVI_DOMENICALI_MAT(C14:C57;SUPERFESTIVI;A14:A57)
compare questo errore in AW7
#VALORE!
Come deve essere modificata la formula in AW7 perché l’errore non compaia quando A15 è vuota?

Se doveva comparire un numero in A15 bastava mettere …….NUM(A14)ecc…
Se invece c’è una data cosa bisogna mettere a posto di NUM?
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Sponsor
 

Re: errore #valore

Postdi ricky53 » 02/05/11 16:59

Ciao,
la UDF "SUPERFESTIVI_DOMENICALI_MAT" che utilizzi fa quasi sicuramente riferimento ad altra discussione.

Puoi invare il codice utilizzato in questa UDF
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: errore #valore

Postdi trittico69 » 02/05/11 18:03

Codice: Seleziona tutto
Public Function SUPERFESTIVI_DOMENICALI_MAT(PRESENZE As Range, _
SUPERFESTIVI As Range, GIORNI As Range) As Integer
Dim A As Range
Dim cl As Range
Dim cl2 As Range
Dim tot As Integer

For Each cl In PRESENZE
   For Each cl2 In SUPERFESTIVI
      If Application.WorksheetFunction.Weekday(cl.Offset(0, -2)) = 1 And _
      cl.Offset(0, -2) = cl2 And cl <> "" Then
       
         tot = tot + 1
         
      End If
   Next cl2
Next cl
SUPERFESTIVI_DOMENICALI_MAT = tot
End Function
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: errore #valore

Postdi Anthony47 » 02/05/11 22:55

Nel codice della udf inserisci le due istruzioni marcate <<<<
Codice: Seleziona tutto
For Each cl In PRESENZE
If isDate(cl.Offset(0, -2)) then    '<<<<
   For Each cl2 In SUPERFESTIVI
      If Application.WorksheetFunction.Weekday(cl.Offset(0, -2)) = 1 And _
      cl.Offset(0, -2) = cl2 And cl <> "" Then
       
         tot = tot + 1
         
      End If
   Next cl2
End if    '<<<<<
Next cl

Buffo anche che la funzione richieda un parametro GIORNI che poi non e' usato, essendo stato sostituito dall' offset "-2" nelle istruzioni; col risultato che l' utente potrebbe immaginare che ci sia flessibilita' sul posizionamento delle date ma invece queste sono "fissate" a -2 rispetto al parametro PRESENZE.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: errore #valore

Postdi trittico69 » 02/05/11 23:07

ho fatto così ma mi da errore di compilazione..la chiamata a sinistra dell'assegnazione deve restituire variant o object e mi evidenzia la penultima riga
SUPERFESTIVI_DOMENICALI_MAT = tot

Codice: Seleziona tutto
Public Function FESTIVI_INFRASETTIMANALI_MAT(PRESENZE As Range, FESTIVI As Range)
Dim cl As Range
Dim cl2 As Range
Dim x As Integer
x = 0
For Each cl In PRESENZE
If IsDate(cl.Offset(0, -2)) Then    '<<<<
   For Each cl2 In SUPERFESTIVI
      If Application.WorksheetFunction.Weekday(cl.Offset(0, -2)) = 1 And _
      cl.Offset(0, -2) = cl2 And cl <> "" Then
       
         tot = tot + 1
         
      End If
   Next cl2
End If    '<<<<<
Next cl
SUPERFESTIVI_DOMENICALI_MAT = tot
End Function
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: errore #valore

Postdi Anthony47 » 02/05/11 23:12

E' una funzione nata per fare cose diverse da quello che stai facendo...
Inserisci anche questa marcata
Codice: Seleziona tutto
Dim x As Integer
tot = 0    '<<<<
x = 0  'e questa a che serve?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: errore #valore

Postdi trittico69 » 02/05/11 23:36

ho risolto cosi
=SE(VAL.ERRORE(SUPERFESTIVI_DOMENICALI_MAT(C14:C57;SUPERFESTIVI;A14:A57))=VERO;0;SUPERFESTIVI_DOMENICALI_MAT(C14:C57;SUPERFESTIVI;A14:A57))
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: errore #valore

Postdi Anthony47 » 02/05/11 23:37

Guarda che e' concettualmente sbagliato usare la formula =SE(VAL.ERRORE(SUPERFESTIVI_DOMENICALI_MAT(C14:C57;SUPERFEST IVI;A14:A57))=VERO;0;SUPERFESTIVI_DOMENICALI_MAT(C14:C57;SU PERFESTIVI;A14:A57))

Perche' basta una qualsiasi cella vuota nel range A14:A57 per darti #Valore, mentre potrebbe benissimo essere che altre date validamente espresse in quell' intervallo contengano un superfestivo, che in questo modo non conteggerai.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "errore #valore":

BTp Valore
Autore: MarioLombardi
Forum: Forum off-topic
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti