Visual Basic 6: Argumente an die Prozedur übergeben

Standardmäßig übergibt Visual Basic Argumente als Referenz. Man kann den Schlüsselbegriff ByRef in eine Argumentliste einfügen, falls das gewünscht wird, aber da dies das Standardverhalten ist, hat es keinen Effekt:


Sub Foo(ByRef Arg1 As Integer,
ByRef Arg2 As String)

Wenn ein Argument als Referenz übergeben wird, wird der Prozedur die Adresse der entsprechenden Variablen übergeben (mit anderen Worten: eine Referenz auf die Variable):


Dim Total as Integer
Call MySub(Total)

In diesem Beispiel erhält MySub eine Referenz auf Total. Die Konsequenz hieraus ist, dass Code in MySub den Wert von Total ändern kann. Hier ein Beispiel, zuerst die Prozedur:


Sub MySub(Total As Integer)
Total = 50
End Sub

Nun der Code zum Aufrufen der Prozedur:


Dim Total As Integer
Total = 100
Call MySub(Total)

Nach Ausführen dieses Codes ist der Wert der Variablen Total gleich 50, denn der Code in der Prozedur ändert deren Wert.

Um ein Argument als Wert zu übergeben, benutzt man den Schlüsselbegriff ByVal:


Sub MySub(ByVal Total As Integer)

Wenn man ByVal verwendet, wird der Prozedur eine Kopie der Argumentvariablen übergeben und nicht eine Referenz auf die Argumentvariable selber. Code in der Prozedur kann daher nicht den Wert der Variablen ändern.


Sub MySub(ByVal Total As Integer)
Total = 50
End Sub

Nun der Code zum Aufrufen der Prozedur:


Dim Total As Integer
Total = 100

Call MySub(Total)

Nach Ausführen dieses Codes ist der Wert der Variablen Total immer noch 100.

Man beachte, dass Arrays sowie benutzerdefinierte Typen als Argumente nicht per ByVal als Wert übergeben werden können. Und die Angaben ByVal oder ByRef haben keine Auswirkungen, wenn es sich bei dem Argument um eine Konstante handelt, sondern nur bei Variablen.

Für die meisten Prozeduren dürfte die Standardeinstellung, also die Übergabe der Argumente als Referenz per ByRef, richtig sein. Man kann ByVal verwenden, wenn man sicherstellen will, dass Code in der Prozedur die als Argument übergebene Variable nicht ändern kann. Außerdem muss man ByVal verwenden, wenn man Windows API- und andere DLL-Funktionen zur Verwendung in eigenen Programmen definiert.

ZDNet.de Redaktion

Recent Posts

KI-gestütztes Programmieren bringt IT-Herausforderungen mit sich

OutSystems-Studie: 62 Prozent der Befragten haben Sicherheits- und Governance-Bedenken bei Softwareentwicklung mit KI-Unterstützung.

3 Tagen ago

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

7 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

1 Woche ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

1 Woche ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

1 Woche ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

1 Woche ago