Newsgroup: it.comp.appl.access
Titolo: passaggio di s = split(stringa) ad una sub o funzione

Bon giorno a tutto il NG.
Come da oggetto devo passare "s" (con s = split(miastringa)) ad una sub
oppure una funzione. Il codice è (riassumendo) così:
Private Sub Comando346_Click()
Dim s As Variant
--------
s = Split("frasedaspezzare", ". ", -1, vbTextCompare)
MsgBox (UBound(s))
miafunzione s
--------
End Sub
Function miafunzione(ParamArray arrFrasi() As Variant)
Dim delle mie varie variabili
MsgBox (UBound(arrFrasi))
---------
End Function
Al click del Comando364 il primo messaggio dà 11, il secondo 0.
Ovviamente non riesco a passare correttamente i valori alla mia
funzione. Ho provato diverse combinazioni, tra cui miafunzione(s) ,
miafunzione s() , miafunzione(s()) e le dichiarazioni di miafunzione
con e senza ParamArray e le parentesi dopo arrFrasi, ma il risultato
non è mai migliorato.
La soluzione che mi ha illuminato mentre postavo è quella di passare
"frasedaspezzare" alla funzione come semplice string e spostare Split
dentro la funzione (in effetti la funzione ora fa quello che mi serve).
Desidero però capire cosa e dove sbagliavo nell'approccio precedente.
Grazie anticipatamente a chi vorrà aiutarmi.
Fabio

 Grazie anticipatamente a chi vorrà aiutarmi.
prego
-- 
Claudio(BS)
L'unico problema per l'uomo non sta nella difficoltà delle sue imprese
ne' nella quantità di denaro necessario per compierle, ma nella durata
della sua esistenza. (Claudio 14.02.2004)
NB. Protezione antispam
Per rispondere aggiungere claudio

Non dice un array ;-)
Ti ringrazio per il suggerimento, l' ho riletto ed in effetti la
descrizione dice (riporto integralmente):
ParamArray: Facoltativa. Utilizzata solo come ultimo argomento di
elencoargomenti, indica che l'ultimo argomento è una matrice Optional
di elementi di tipo Variant. La parola chiave ParamArray consente di
indicare un numero arbitrario di argomenti. Non può essere utilizzata
con ByVal, ByRef oppure Optional.
Secondo l'help in linea dunque l'argomento che passo io dovrebbe essere
una matrice, no? Sempre secondo l'help la funzione split restituisce
una matrice a una dimensione con base zero contenente il numero di
sottostringhe specificato, e qui casca l'asino (cioè il sottoscritto):
sto provando a fare qualcosa che non so fare, con strumenti che non
capisco, ed il risultato mi è di conseguenza oscuro.
Io ho provato sia con, che senza l'indicazione "ParamArray", ed in
entrambi i casi il passaggio dei dati alla funzione li "distrugge". Ho
aggirato il problema, ma vorrei davvero riuscire a capire cosa c'è di
sbagliato nella mia procedura.
Grazie ancora per l'interessamento
Fabio

 
Non fermarti all'help, guarda l'esempio che è molto più chiaro ;-)
byEz


 [CUT]
Grazie, ora ho compreso tutto e risolto (almeno l'utilizzo di
Paramarray mi è un po' più chiaro: posso passargli tutti i valori che
voglio, purchè uno alla volta, mentre io in pratica li passavo tutti
insieme nell'indice 0 e per questo UBound mi restituiva 0). Mi è
bastato infine chiamare "miafunzione s" dalla sub principale e
dichiarare "Function miafunzione (arrFrasi as Variant)".
Grazie per la pazienza e per avermi risposto, soprattutto perchè ora
mi rendo conto della banalità del mio errore! Ero convintissimo di
averla provata come prima soluzione.
Fabio