Was bedeuten die Schlüsselwörter ByVal und ByRef? ByVal legt fest, dass ein Argument als Wert übergeben wird, d. h. der Wert eines Arguments wird an eine Prozedur oder Funktion anstelle der Adresse übergeben. Dadurch kann die Prozedur auf ein Kopie der Variablen zugreifen. Das bedeutet, dass der aktuelle Wert der Variablen nicht von der Prozedur verändert werden kann, an die er übergeben wird. ByRef legt fest, dass das Argument als Verweis übergeben wird, d. h. die Adresse eines Arguments wird an eine Prozedur oder Funktion anstelle des Werts übergeben. Dadurch kann die Prozedur auf die tatsächliche Variable zugreifen. Das bedeutet, dass der aktuelle Wert der Variablen von der Prozedur geändert werden kann, an die er übergeben wird. Wenn nichts anderes angegeben wird, werden Argumente als Referenz übergeben, da ByRef der Standardwert in Visual Basic ist. Um das auszuprobieren, starten Sie ein neues Projekt und platzieren auf der Form 2 CommandButtons, die Sie wie folgt benennen: Name = Command1, Caption = ByRef, Name = Command2, Caption = ByVal. Dann noch folgender Code: ' Parameterübergabe ByRef Function RechneA(x As Long, y As Long) As Long RechneA = (x + y) x = x + 1 End Function Private Sub Command1_Click() Dim x As Long, y As Long x = 5 y = 6 MsgBox RechneA(x, y) MsgBox x End Sub In diesem Beispiel wird durch ByRef die Variable selbst übergeben. Als Ergebnis wird angezeigt: 11 und 6. Die Funktion hat durch ByRef die übergebene Variable verändert, was mit ByVal nicht passiert wäre. ' Parameterübergabe ByVal Function RechneB(ByVal x As Long, ByVal y As Long) As Long RechneB = (x + y) x = x + 1 End Function Private Sub Command2_Click() Dim x As Long, y As Long x = 5 y = 6 MsgBox RechneB(x, y) MsgBox x End Sub In diesem Beispiel wird durch ByVal nur der Wert übergeben: 5 und 6. Als Ergebnis wird angezeigt: 11 und 5. Diese Seite wurde bereits 38.210 mal aufgerufen. |
Neu! sevEingabe 3.0 ![]() Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Buchempfehlung Tipp des Monats Dieter Otter Doppelte Einträge aus einer Liste entfernen (.NET) Wie man schnell alle doppelten Einträge aus einer Liste entfernt, das erfahren Sie hier. TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||




