
Originariamente inviata da
gibra
Si usano dei parametri per riferimento, dichiarati
ByRef, esempio:
codice:
Public Function myFunction(Byval par1 As Long, ByVal par2 As Long, ByRef parRif1 As Boolean, ByRef parRif2 As String) As Long
Dim lngRet As Long
If (par1 > 0) And (Par2>0) Then
lngRet = (par1 * par2)
parRif1 = True
parRif2 = "Moltiplicazione eseguita con successo"
Else
parRif1 = False
parRif2 = "Moltiplicazione fallita"
End If
MyFunction = lngRet
End Function
Rem -------------------------------------
Rem Uso della funzione
Rem -------------------------------------
Dim lngRet As Long
Dim bEsito As Boolean
Dim sMsg As String
lngRet = MyFunction(15, 2 , bEsito, sMsg)
Debug.Print lngRet, besito, sMsg
Vediamo se inizio a capirci qualcosa.
La funzione postata da gibra, puo' essere usata cosi' come e' in un foglio di calcolo, ma l'unico valore che ottengo nel foglio di calcolo e' lngRet, tutto il resto va perso in quanto sto usando una function.
Se voglio ottenere anche quei valori, allora credo che dovro' fare una sub del genere (prendetelo come pseudocodice, serve solo per proseguire nella discussione, la sintassi del VBA devo ancora digerirla essendo alle prime armi), rimanendomi i seguenti dubbi, per come vorrei poterla usare:
- i 4 parametri da passare alla sub, quindi alla function, vorrei che fossero delle celle da definire 'al momento', non predefinite (con le funzioni, selezionerei col mouse ad esempio la cella in cui c'e' il parametro che sto per passare, con la sub non so se e' possibile questo)
- vorrei che la sub venisse richiamata in automatico, come le funzioni di excel, o almeno quando una delle celle contenente i parametri a cui si riferisce viene modificata
- molto probabilmente i byval e byref della sub sono da sistemare, ma per ora mi interessa capire se quello che ho in mente e' possibile o no senza scomodare pulsanti, form e altro, altrimenti torno al C++
codice:
sub miasub(Byval par1 As Long, ByVal par2 As Long, ByRef parRif1 As Boolean, ByRef parRif2 As String)
call MyFunction(par1, par2, parRif1, parRif2)
end sub
Grazie