Function Addition(zahl1 As Integer, zahl2 As Integer) As Integer
Addition = zahl1 * zahl2
End Function
'---------------------------
Sub Main()
Dim x, y, ergebnis As Integer
x = 12
y = 10
ergebnis = Addition(CInt(x), CInt(y))
Debug.Print (ergebnis)
End Sub
Die Fehlermeldung kommt bei dir dadurch das die Argumente bei der Funktion Addition ByRef übergeben werden, d.h. du könntest innerhalb dieser Funktion den Inhalt der Variable ändern und dieser ist dann auch außerhalb geändert. Da jedoch die Argumente von außen kein Integer vom Datentyp her sind, wie sie im Funktionskopf deklariert sind, meckert der Compiler.
Beispiel, was das noch mal verdeutlichen soll:
Function Addition(zahl1 As Integer, zahl2 As Integer) As Integer
zahl1 = 1
Addition = zahl1 * zahl2
End Function
'---------------------------
Sub Main()
Dim x As Integer, y As Integer, ergebnis As Integer
x = 12
y = 10
ergebnis = Addition(x, y)
Debug.Print "x{" & x & "} + y{" & y & "} = " & ergebnis
End Sub
und das gleiche mit zuerstgenannten Code:
Function Addition(zahl1 As Integer, zahl2 As Integer) As Integer
zahl1 = 1
Addition = zahl1 * zahl2
End Function
'---------------------------
Sub Main()
Dim x, y, ergebnis As Integer
x = 12
y = 10
ergebnis = Addition(CInt(x), CInt(y))
Debug.Print "x{" & x & "} + y{" & y & "} = " & ergebnis
End Sub
Hier bleibt zahl1 unverändert. Das liegt daran das CInt eine neue temporäre Variable erstellt, die zwar geändert wird, aber halt eben nicht Variable x.
Zuletzt noch ohne CInt:
Function Addition(ByVal zahl1 As Integer, ByVal zahl2 As Integer) As Integer
Addition = zahl1 * zahl2
End Function
'---------------------------
Sub Main()
Dim x, y, ergebnis As Integer
x = 12
y = 10
ergebnis = Addition(x, y)
Debug.Print "x{" & x & "} + y{" & y & "} = " & ergebnis
End Sub
PS: Da du deine Prozedur Main genannt hast, nehme ich mal an du kommst von C/C++ ? Dann müsstest du unter dem Begriff Zeiger etwas verstehen, denn genau darum geht es hier... nur verbirgt VB/VBA den Umgang mit Zeigern vor dem Nutzer.
|