Newsgroup: it.comp.lang.visual-basic
Titolo: Funzione con più risultati

Ciao a tutti,
scusatemi se il problema potrebbe essere banale...
Ho la necessitň di scrivere una function che mi emetta piů risultati da 
utilizzare nel Button principale. Come posso fare?
Ad es.
Private Sub Command1_Click()
    CalcolaValori "prova"
    MsgBox Valore1
    MsgBox Valore2
    MsgBox Valore3
End Sub
Function CalcolaValori(testo As String)
    Valore1 = "Ciao1"
    Valore2 = "Ciao2"
    Valore3 = "Ciao3"
    CalcolaValori = "Ciao4"
End Function
Con il codice di cui sopra ovviamente riesco fare MsgBox solo di "Ciao4"...
e se volessi farlo anche degli altri valori? come devo fare?
Grazie anticipatamente 

 utilizzare nel Button principale. Come posso fare?
Se il numero di valori sono noti in partenza e non variano puoi passarli 
per valore alla tua funzione:
Private Sub Command1_Click()
    Dim Parametro1 As String
    Dim Parametro2 As String
    Dim Parametro3 As String
    Dim Parametro4 As String
    CalcolaValori Parametro1, Parametro2, Parametro3, Parametro4
    MsgBox Parametro1
    MsgBox Parametro2
    MsgBox Parametro3
    MsgBox Parametro4
End Sub
Function CalcolaValori(byRef Parametro1 As String, byRef Parametro2 As 
String, byRef Parametro3 As String, byRef Parametro4 As String)
    Parametro1 = "Ciao1"
    Parametro2 = "Ciao2"
    Parametro3 = "Ciao3"
    Parametro4 = "Ciao4"
End Function
oppure se il numero di parametri č variabile puoi passare un Array.
ciao
stefano

 per valore alla tua funzione:
Scusa, ovviamente volevo dire:
puoi passarli per RIFERIMENTO alla tua funzione
ciao
stefano

 ha scritto nel messaggio 
news:47f5c3c1$0$36445$4faf...@reader5.news.tin.it...


 function usi una semplice sub che modifica tali valori.
Scusa ma la prima soluzione proposta è onestamente la più pulita. Le 
variabili globali esistono sempre e vengono istanziate nel momento in 
cui apri il programma anche se non le usi. Al massimo se le deve 
inserire fuori la function fagli usare delle "Private" che almeno 
vengono stanziate solo se accede al modulo/classe o al form e si 
schiantano appena il form o la classe si chiude.

 ha scritto nel messaggio 
news:LMlJj.10999$T35...@tornado.fastwebnet.it...


 scusatemi se il problema potrebbe essere banale...
se si tratta di vb2005 puoi fare una collezione usando i generics...e 
come soluzione è davvero elegantissima!
saluti MVB

.Net o Vb 6?
Dall'assenza di parentesi sul "MsgBox" presumo la seconda.
Allora segui il consiglio di Stefano Ferrari.
Oppure usa un normale array di stringhe (in questo caso) di 4 elementi, che 
passi tra le due funzioni.
Ovvero del tipo:
Private Sub Command1_Click()
    Dim valori As String()
    valori = CalcolaValori("prova")
    MsgBox valori(0)
    MsgBox valori(1)
    MsgBox valori(2)
    MsgBox valori(3)
End Sub
Function CalcolaValori(testo As String) As String()
    Dim valori(3) As String
    valori(0) = "Ciao1"
    valori(1) = "Ciao2"
    valori(2) = "Ciao3"
    valori(3) = "Ciao4"
    Return valori
End Function
Bye,
-- 
Carmine
Webmaster di 
www.thetotalsite.it
Blog 
http://blog.thetotalsite.it
 

 End Function
Solo se la function restituisce un dato String, puoi anche farle restituire
anche una stringa in cui i valori sono concatenati, sulla quale eseguire una
Split per utilizzare i valori:
Public Function CalcolaValori() As String
    Dim valore As String
    valore = "Ciao1"
    CalcolaValori = valore
    valore = "Ciao2"
    CalcolaValori = CalcolaValori & "-" & valore
    valore = "Ciao3"
    CalcolaValori = CalcolaValori & "-" & valore
    valore = "Ciao4"
    CalcolaValori = CalcolaValori & "-" & valore
End Function
Private Sub Command1_Click
    Dim Valore() As String
    Valore = Split(CalcolaValori, "-")
    MsgBox Valore(0)
    MsgBox Valore(1)
    MsgBox Valore(2)
    MsgBox Valore(3)
End Sub
Se invece devi restituire numeri devi destreggiarti con le funzioni di
conversione e ti conviene restituire una matrice.
Spero sia utile.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Dall'assenza di parentesi sul "MsgBox" presumo la seconda.
parentesi a parte, in net non e' messagebox.show ?

 parentesi a parte, in net non e' messagebox.show ?
Sì, ma nella solita Microsoft.VisualBasic.dll c'è una funzione MsgBox, 
che ovviamente è un wrapper del metodo MessageBox.Show() di .NET ma è 
rimaneggiato per accettare i parametri della vecchia MsgBox.
Naturalmente non ha molto senso usarla, se non per compatibilità.
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL