Problema con le collection
Hai un problema con Excel? 
Problema con le collection
di Thgnss data: 29/10/2010
Salve a tutti, da qualche giorno studio vba e non riesco a risolvere un piccolo problema riguardante il passaggio di una collection come argomento di una funzione.
questo è un semplice esempio di prova che illustra il mio problema...
non ho fatto altro che aprire vbe da un documento excel, inserire un nuovo modulo con all'interno il seguente codice:
option explicit
sub main()
dim c as collection
set c = new collection
f (c)
end sub
function f(c as collection)
msgbox ("ciao")
end function
quando compilo mi esce l'errore di compilazione:
argomento non facoltativo.
in realtà la definizione della funzione richiede un oggetto di tipo collection, ed è quello che tento di passare come argomento.
e' apprezzato ogni tipo di aiuto
grazie in anticipo
di Ricky53 (utente non iscritto) data: 30/10/2010
Ciao,
una funzione va richiamata in questo modo
variabile1 = f(c)
e
non
f(c)
ciao da ricky53
di Thgnss (utente non iscritto) data: 31/10/2010
Ho provato a modificare l'esempio come suggerito ma il problema persiste...
di Ricky53 (utente non iscritto) data: 01/11/2010
Ciao,
io avevo provato con la versione di excel 2003 e non avevo avuto nessun errore.
tu che versione hai?
ti invio le tue macro con le modifiche che ho fatto.
ciao da ricky53
option explicit
sub main()
dim c as collection
dim dato as string
set c = new collection
dato = f(c)
end sub
function f(c as collection)
msgbox ("ciao")
end function
|
di Thgnss (utente non iscritto) data: 01/11/2010
Ciao ricky,
in effetti avevi ragione, c'è bisogno di un assegnamento per far compilare senza alcun problema e evidentemente c'era qualche errore nel codice che avevo utilizzato per la prova.
da quanto detto emergerebbe quindi che per richiamare una funzione ci sia bisogno di assegnarla ad una variabile, è corretto?
in caso affermativo non è quindi possibile utilizzare funzioni che non hanno un valore di ritorno... è corretto anche questo?
in realtà segue un semplice esempio che sembrerebbe smentire quanto appena detto:
option explicit
sub main()
dim i as integer
i = 1
f (i)
end sub
function f(c as integer)
msgbox ("ciao")
end function
in questo esempio richiamo una funzione senza assegnare il valore di ritorno ad alcuna variabile e il tutto compila senza problemi.
un'altra cosa strana a riguardo è che gli stessi problemi con le collection vengono riscontrati anche con le subroutine(che non prevedono valori di ritorno) e non solo con le function.
la porzione di codice seguente infatti evidenzia gli stessi problemi di compilazione di quella originaria (argomento non facoltativo):
option explicit
sub main()
dim c as collection
set c = new collection
s (c)
end sub
sub s(c as collection)
msgbox ("ciao")
end sub
grazie per il tuo aiuto ricky, ma ti sarei grato se potessi aiutarmi a fare luce su questi aspetti ancora poco chiari.
saluti
di Enzo (utente non iscritto) data: 04/11/2010
Scusate la mia intromissione ma ne approfitterei senza dover aprire una nuova discussione per chiedervi se mi potreste spiegare facendomi anche un esempio banale cosa sono e come funzionano le collection (a cosa servono), ripeto con un esempio banale?
Vuoi Approfondire?