Se hai risolto il tuo problema allora va bene così
Pero' tu hai aggirato la domanda risolvendo il problema in altro modo; per chi e' invece interessato alla soluzione della domanda posta (come creare un funzione che restituisce piu' valori) aggiungo le mie considerazioni.
Innanzitutto il dato restituito dalla Function deve essere dichiarato Variant
- Codice: Seleziona tutto
Function Dati(ByVal num As Byte) As Variant
Poi i risultati vanno posizionati in una matrice monodimensionale, come hai ben fatto tu:
- Codice: Seleziona tutto
Dim Radio(1 To 3) As Byte
Il codice della Function deve compilare le singole celle di questa matrice (come hai ben fatto tu)
Infine alla Function deve essere assegnata la matrice:
- Codice: Seleziona tutto
Dati = Radio
Quindi il codice completo potrebbe essere:
- Codice: Seleziona tutto
Function Dati(ByVal num As Byte) As Variant
Dim Radio(1 To 3) As Byte
If num < 10 Then
n1 = num + 10
End If
If n1 < 20 Then
n2 = n1 + 10
End If
If n2 < 30 Then
n3 = n2 + 30
End If
Radio(1) = n1
Radio(2) = n2
Radio(3) = n3
'Esponi i risultati:
Dati = Radio
End Function
Potrai poi usarla come formula, tipo
- Codice: Seleziona tutto
=dati(B1)
O richiamarla da una macro, tipo
- Codice: Seleziona tutto
myVariant = Dati(Range("B1").Value)
Se usi una versione Excel che gestisce "matrici dinamiche" (vedi
viewtopic.php?f=26&t=111058) la formula scritta in una cella singola ti compilera' anche le due celle a destra della formula.
Altrimenti devi scriverla tu come formula a matrice:
-selezioni tre celle in orizzontale;
-scrivi nella barra della formula
=dati(B1)-confermi con Contr-Maiusc-Enter
Se vuoi che i risultati si sviluppino in verticale allora userai
- Codice: Seleziona tutto
=MATR.TRASPOSTA(dati(B1))
Ciao