Parameter - aber Achtung
Die Frage, warum der folgende Code einen Fehler bringt und wie man dies vermeiden kannOption Explicit
Public Sub TueEs()
'Die Prozedur (Das Makro) welches ausgeführt wird
Dim i As Integer
i = 10
MsgBox Quadrat(i)
End Sub
Private Function Quadrat(DerWert As Long) As Long
Quadrat = DerWert ^ 2
End Function
Wenn man die Sub TuEs startet, kommt eine Fehlermeldung:
Private Function Quadrat(ByVal DerWert As Long) As Long
Quadrat = DerWert ^ 2
End Function
Der Grund:Option Explicit
Public Sub TueEs()
'Die Prozedur (Das Makro) welches ausgeführt wird
Dim i As Integer
i = 1000
MsgBox Quadrat(i)
MsgBox i
End Sub
Private Function Quadrat(ByVal DerWert As Long) As Long
DerWert = DerWert ^ 2
Quadrat = DerWert
End Function
Und hier das Gegenbeispiel mit ByRef und gleicher Deklaration:
Option Explicit
Public Sub TueEs()
'Die Prozedur (Das Makro) welches ausgeführt wird
Dim i As Long
i = 1000
MsgBox Quadrat(i)
MsgBox i
End Sub
Private Function Quadrat(ByRef DerWert As Long) As Long
DerWert = DerWert ^ 2
Quadrat = DerWert
End Function
Aber jetzt:
Option Explicit
Public Sub TueEs()
'Die Prozedur (Das Makro) welches ausgeführt wird
Dim i As Integer
i = 10
MsgBox Quadrat((i))
End Sub
Private Function Quadrat(DerWert As Long) As Long
Quadrat = DerWert ^ 2
End Function