Newsgroup: it.comp.appl.access
Titolo: function optional var - errore

salve
 
non capisco dove sbalgio:
 
 
Function func(aa As String, Optional arg As String = "bbb")
 
    Debug.Print aa & "," & arg
End Function
 
se eseguo
 
 
func("prova")
mi scrive
 
prova
 
 
 
ma se func("prova","pippo")
 
mi da' 
 
errore di compilazione
previsto :=
 
 
 
dove sbaglio?
 
 
grazie
 


Quello che dici è assolutamente impossibile...
Il parametro Optional valorizzato a "bbb" in caso non venga definito... non è trascurabile...
 
Infatti se provo la tua Funzione nella finestra immediata si comporta in modo normale e non come dici tu... quindi mi chiedo che prove hai fatto...?
 
1° Esempio non valorizzo il 2° Parametro
?func("Pippo")
Pippo,bbb
 
2° Esempio valorizzo il 2° Parametro
?func("Pippo","Pluto")
Pippo,Pluto
 
Questo è il comportamento che è ovvio abbia...
 
Difficile dire dove sbagli...
 
@Alex

 dove sbaglio?
 
VBA con un solo argomento acceta la sintassi
  func("prova")
ovvero
  func ("prova")
anche se non consumi il valore di ritorno della funzione. Le parentesi 
vengono quasi ignorate. La sintassi "giusta" per questo caso sarebbe o 
senza parentesi (=implicitamente usare Call) o esplicitamente usare Call 
per rigettare il valore di ritorno:
 
func "prova"
o
Call func("prova")
 
Con >1 argomento nella chiamata VBA diventa più rigoroso e dovresti o 
consumare il valore di ritorno o di nuovo lasciar perdere le parentesi o 
esplicitamente usare Call:
 
Dim RetVal
RetVal = func("prova", "pippo")
o
func "prova", "pippo"
o
Call func("prova", "pippo")
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 

 Difficile dire dove sbagli...
 
Nel suo esempio non ha ? (= Print) nella finestra immediata (o 
debug.print nel codice). Invece il solo
 
func("Pippo","Pluto")
 
anche nella finestra immediata deve dare l'errore di sintassi.


grazie moltissimo della dritta:
in effetti devo dire che l'errore era nella chiamata
 
func("prova") --> funziona
 
mentre se metto 2 parametri devo scrivere call func("prova","pippo") e non 
 
devo ricordarmi il tipo di chiamata.


 anche nella finestra immediata deve dare l'errore di sintassi.
 
Condivido la spiegazione nella Funxtion, ma forse fraintendo questa tua ultima spiegazione relativa alla Finestra immediata... che da me non genera alcun errore...
 
Ripeto il test che faccio:
Function func(aa As String, Optional arg As String = "bbb")
    Debug.Print aa & "," & arg
End Function
 
Da Finestra Immediata:
?Func ("Pippo")
Pippo,bbb ------> NESSUN ERRORE
 
?Func ("Pippo", "Pluto")
Pippo,Pluto ------> NESSUN ERRORE
 
?Func "Pippo"  -----> OVVIAMENTE ERRORE(anche con 2 parametri)
?Call Func("Pippo") -----> OVVIAMENTE ERRORE(anche con 2 parametri)
 
Cosa ho frainteso per te...?
 
@Alex

 Cosa ho frainteso per te...?
 
Tutte le tue prove erano con "?" all'inizio della riga, cioè il commando 
Print. Invece ho scritto:
 
func("Pippo","Pluto")
 
senza "?" all'inizio deve fornire un errorea anche nella finestra 
immediata. È la stessa cosa come usare questa riga nel codice come 
sembra ha provato lui.


Ok avevo frainteso.
 
 
@Alex

 Access FAQ: 
http://www.donkarl.com/it
 
 
Karl, se hai modo di ridarmi la tua Mail, magari se hai conservato la mia basta che mi risondi... volevo mandarti una considerazione sul GANTT.
 
Ciao
@Alex

 Karl, se hai modo di ridarmi la tua Mail, magari se hai conservato la mia basta che mi risondi... volevo mandarti una considerazione sul GANTT. 
 
Non ho la tua qui perché sono a Redmond per alcuni giorni. Però basta 
sostituire NoSpam con admin nell'indirizzo che uso qui.


 Access FAQ: 
http://www.donkarl.com/it
 
 
Uso Google Groups e non vedo la mail... ma non è urgente, quando avrai modo e tempo.
 
Lavora per noi ;-)
 
Ciao
@Alex

 Lavora per noi ;-)
 
Sissignore. Nelle discussioni e le mie presentazioni per il team di 
Access ci sono anche sempre punti che abbiamo discusso qui. Cioè, icaa è 
quasi presente. ;-)


Molto bene OTTIMA rapprezentanza.
 
Ciao Karl.
@Alex