IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Excel
  New Posts New Posts RSS Feed - Funzione personalizzata che non funziona
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

 Topic   Topic Hot   Topic New   Topic Locked   Topic Sticky   Topic Hidden

Funzione personalizzata che non funziona

 Post Reply Post Reply
Author
Message
andrea61 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 04/Mar/2009
Location: Italy
Status: Offline
Points: 7
Post Options Post Options   Thanks (0) Thanks(0)   Quote andrea61 Quote  Post ReplyReply Direct Link To This Post Topic: Funzione personalizzata che non funziona
    Posted: 21/Mag/2012 at 09:36
Ciao a tutti,
ho tentato di creare una funzione personalizzata che calcoli un prezzo, con degli if e una ricerca su tabelle

non funziona, potreste darmi una mano ?

Grazie mille in anticipo

sottoriporto il codice e allego una versione semplificata del foglio


Public Function Calcoloprezzocopia(Quantitacopie As Variant, Note As Variant, Pagine As Variant, _
Tabella_sino As Range, TABtariffeFF As Range, TABtariffeFV As Range, _
Tipoconfez As Variant, Formatolibro As Variant, _
Grammaturacarta As Variant) As Variant
'


'Application Volatile
'
Dim Calcoloprezzocopia As Variant
Dim Quantitacopie As Variant
Dim Note As Variant
Dim Pagine As Variant
Dim Tabella_sino As Range
Dim TABtariffeFF As Range
Dim TABtariffeFV As Range
Dim Tipoconfez As Variant
Dim Formatolibro As Variant
Dim Grammaturacarta As Variant
Dim Codicericerca As Variant
Dim VAR1 As Variant
Dim VAR2 As Variant
Dim VAR3 As Variant
Dim VAR4 As Variant
Dim VAR5 As Variant

Codicericerca = Tipoconfez & Formatolibro & Grammaturacarta

VAR1 = WorksheetFunction.VLookup(Codicericerca, Tabella_sino, 2)

If VAR1 = "NO" Then
    Calcoloprezzocopia = "NO PRICES LIST"

Else
    If Note <> "" Then
        Calcoloprezzocopia = "EXTRACOSTS"
    Else
        If Pagine > 64 Then
            Calcoloprezzocopia = "ATTN high number of pages"
        Else:
            VAR2 = WorksheetFunction.VLookup(Codicericerca, TABtariffeFF, 2)
            VAR3 = WorksheetFunction.HLookup(Pagine, TABtariffeFF, 2)
            VAR4 = WorksheetFunction.VLookup(Codicericerca, TABtariffeFV, 2)
            VAR5 = WorksheetFunction.HLookup(Pagine, TABtariffeFV, 2)
              
            Calcoloprezzocopia = WorksheetFunction.Index(TABtariffeFF, VAR2, VAR3) _
        / Quantitacopie + Index(TABtariffeFV, VAR4, VAR5)
       
        End If
    End If
End If

End Function


uploads/17926/Funzione_Personalizzata_n1.rar



. . . . . . . . . . . . . . . . . . . . . . . .
EDIT
Ho inserito i TAG per il codice.

La prossima molta puoi inserirli tu.
Grazie per la collaborazione
Ciao da Ricky53
. . . . . . . . . . . . . . . . . . . . . . . .



Edited by Ricky53 - 21/Mag/2012 at 13:04
Andrea61
Back to Top
Zer0Kelvin View Drop Down
Nuovo Utente
Nuovo Utente
Avatar

Joined: 23/Mar/2012
Status: Offline
Points: 40
Post Options Post Options   Thanks (0) Thanks(0)   Quote Zer0Kelvin Quote  Post ReplyReply Direct Link To This Post Posted: 21/Mag/2012 at 12:00
Ciao.
Ad una prima lettura ho trovato i seguenti errori:
-nel foglio il nome della UDF è errato (Calcoloprezzo invece di Calcoloprezzocopia)
-nel codice della UDF vengono ridefinite come variabili locali sia i parametri che il nome della funzione, questo genera un errore in fase di compilazione.
-almeno uno dei nomi del foglio fa riferimento a un intervallo errato
-nel codice
        Calcoloprezzocopia = WorksheetFunction.Index(TABtariffeFF, VAR2, VAR3) _
        / Quantitacopie + (***qui manca il riferimento a WorksheetFunction***)Index(TABtariffeFV, VAR4, VAR5)

manca un WorksheetFunction. nel punto indicato.
E da rivedere con calma, al momento io non ho tempo, ma penso che si possa risolvere con relativa facilità.



Edited by Zer0Kelvin - 21/Mag/2012 at 12:05
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Se dai ad un uomo un pesce lo avrai sfamato per un giorno; se gli insegni a pescare lo avrai sfamato per sempre!
Back to Top
jorel View Drop Down
Veterano
Veterano


Joined: 13/Mar/2009
Status: Offline
Points: 1531
Post Options Post Options   Thanks (0) Thanks(0)   Quote jorel Quote  Post ReplyReply Direct Link To This Post Posted: 21/Mag/2012 at 18:55
Ciao.

Per i calcoli da eseguire e gli IF da applicare mi sembra che l'udf non sia strettamente necessaria.
Back to Top
andrea61 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 04/Mar/2009
Location: Italy
Status: Offline
Points: 7
Post Options Post Options   Thanks (0) Thanks(0)   Quote andrea61 Quote  Post ReplyReply Direct Link To This Post Posted: 21/Mag/2012 at 20:08
grazie a tutti, domani al lavoro cerco di mettere ordine
con i consigli che mi avete dato.

Chiedo scusa a Ricky53 ma da niubbo non so cosa
siano i tag del codice ...

grazie ancora
Andrea
Andrea61
Back to Top
andrea61 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 04/Mar/2009
Location: Italy
Status: Offline
Points: 7
Post Options Post Options   Thanks (0) Thanks(0)   Quote andrea61 Quote  Post ReplyReply Direct Link To This Post Posted: 28/Mag/2012 at 17:34
Smile Risolto !
grazie a tutti e se a qualcuno interessa ecco il codice corretto sulle vostre indicazioni


Public Function Calcoloprezzocopia(Quantitacopie As Variant, Note As Variant, Pagine As Variant, _
 Tabella_sino As Range, TABtariffeFF As Range, TABtariffeFV As Range, _
 Tipoconfez As Variant, Formatolibro As Variant, _
 Grammaturacarta As Variant, Forzat As Variant) As Variant
 '

 Dim Codicericerca As Variant
 Dim VAR1 As Variant
 Dim VAR2 As Variant
 Dim VAR3 As Variant
 Dim VAR4 As Variant
 Dim VAR5 As Variant
 Dim VAR6 As Variant
 Dim VAR7 As Variant
 
Codicericerca = Tipoconfez & Formatolibro & Grammaturacarta
 
VAR1 = WorksheetFunction.VLookup(Codicericerca, Tabella_sino, 2)
 
If WorksheetFunction.VLookup(Codicericerca, Tabella_sino, 2) = "NO" Then
 Calcoloprezzocopia = "NO TARIF"
 
Else
 If Note <> "" Then
 Calcoloprezzocopia = "EXTRACOSTS"
 Else
 If Pagine > 104 Then
 Calcoloprezzocopia = "*** PAGES  ***"
 Else:
 VAR2 = WorksheetFunction.VLookup(Codicericerca, TABtariffeFF, 2)
 VAR3 = WorksheetFunction.HLookup(Pagine, TABtariffeFF, 2)
 VAR4 = WorksheetFunction.VLookup(Codicericerca, TABtariffeFV, 2)
 VAR5 = WorksheetFunction.HLookup(Pagine, TABtariffeFV, 2)

       If Forzat = "4+0" Then
            VAR6 = 60
            VAR7 = 0.003
            Else
            VAR6 = 0
            VAR7 = 0
       End If
Calcoloprezzocopia = (WorksheetFunction.Index(TABtariffeFF, VAR2, VAR3) + VAR6) _
 / Quantitacopie + (WorksheetFunction.Index(TABtariffeFV, VAR4, VAR5) + VAR7)
 
End If
 End If
 End If
 
End Function

 

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EDIT
Inseriti TAG per il codice
Leggi il mio intervento che trovi dopo il tuo

Ciao da Ricky53
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .




Edited by Ricky53 - 29/Mag/2012 at 11:11
Andrea61
Back to Top
Ricky53 View Drop Down
Amministratore
Amministratore
Avatar
Esperto di Excel e PowerPoint

Joined: 05/Ott/2006
Location: Italy
Status: Offline
Points: 9463
Post Options Post Options   Thanks (0) Thanks(0)   Quote Ricky53 Quote  Post ReplyReply Direct Link To This Post Posted: 29/Mag/2012 at 11:09
Ciao Andrea,
i TAG, nello specifico quelli per il "Codice", evidenziano e rendono leggibile il codice.

La sintassi è
[*code]
all'inizio del codice
e
[*/code]
alla fine del codice

ATTENZIONE: * non va scritto, l'ho inserito solo per far vedere come va utilizzato CODE.


Edited by Ricky53 - 29/Mag/2012 at 11:17
Amministratore

Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.11
Copyright ©2001-2012 Web Wiz Ltd.

This page was generated in 0,219 seconds.