ciao Zamlix,
Grazie mille Sandro!
prego :-)
[...]
Funziona! (ovviamente)
bene!
Ho una domanda però, (scusa l'ignoranza). Come mai entra nella funzione senza utilizzare il comando Call?
il nostro Mauro ti ha risposto molto bene direi :-)
[...]
altra cosa nelle parentesi della funzione hai indicato byVal. Per cosa sta?
[...]
con VBA puoi passare i parametri byVal o byRef se non specifichi nulla, il predefinito è byRef.
La differenza.
ByRef passi il riferimento del parametro che se viene modificato dalla routine chiamata anche la chiamante vede la modifica.
ByVal passi il valore del parametro che se viene modificato dalla routine chiamata la chiamante non vede la modifica, in pratica byVal non il valore originale resta inalterato.
Difficile...? no dai...esempio.
Option Compare Database
Option Explicit
Public Function mySum(ByRef primo As Integer, ByRef secondo As Integer) As Integer
primo = primo + 1
mySum = primo + secondo
End Function
Public Function mySum2(ByVal primo As Integer, ByVal secondo As Integer) As Integer
primo = primo + 1
mySum2 = primo + secondo
End Function
Public Function mySum3(primo As Integer, secondo As Integer) As Integer
primo = primo + 1
mySum3 = primo + secondo
End Function
Public Sub byVal_VS_byRef()
Dim primo As Integer
primo = 5
MsgBox mySum(primo, 3)
MsgBox primo
End Sub
Public Sub byVal_VS_byRef2()
Dim primo As Integer
primo = 5
MsgBox mySum2(primo, 3)
MsgBox primo
End Sub
Public Sub byVal_VS_byRef3()
Dim primo As Integer
primo = 5
MsgBox mySum3(primo, 3)
MsgBox primo
End Sub
byVal_VS_byRef e byVal_VS_byRef3 mostrano gli stessi valori e cioè 9 e 6, perché appunto la routine chimante vede la modifica al parametro.
byVal_VS_byRef2 invece no, 9 e 5 perché passi il valore e non il riferimento in memoria del valore del parametro.
Grazie mille veramente
prego!
ciao, Sandro.