Dies ist eine der am häufigsten gestellten Fragen in VBA-Interviews. In diesem Artikel erfahren Sie, was der Unterschied zwischen ByVal- und ByRef-Argumenten in Excel VBA ist.
Definitionen:
ByRef-Argument: Es ist die wörtliche Kurzform von durch Verweis. Wenn ein Argument als ByRef-Argument an eine andere Unterfunktion oder Funktion übergeben wird, wird die Referenz der aktuellen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, spiegeln sich im ursprünglichen Argument wider.
Wir können sagen, dass anstelle von Wert die Position des Werts an eine Funktion gesendet wird, indem ByRef an eine Funktion verwendet wird.
Dies ist das Standardargument in VBA. Wir müssen ByRef nicht vor dem Argument schreiben.
Syntax:
Sub x(a als Variante)
'Oder
Sub x(ByRef a als Variante)
ByVal-Argument: Es ist eine wörtliche Kurzform von nach Wert. Wenn ein Argument als ByVal-Argument an eine andere Unterfunktion oder Funktion übergeben wird, wird nur der Wert des Arguments gesendet. Das ursprüngliche Argument bleibt erhalten. Alle Änderungen, die in der fremden Funktion oder Sub vorgenommen wurden, werden nicht im ursprünglichen Argument widergespiegelt.
Um ein Argument als ByVal zu deklarieren, müssen Sie das Schlüsselwort ByVal vor dem Argument verwenden.
Syntax:
Sub x(ByVal a als Variante)
Jetzt kennen wir die Definitionen. Sehen wir uns ein Beispiel an und kommen wir damit klar.
ByRef-Beispiel
Hier ist ein einfaches Programm.
Sub X(ByRef a als Variante) a = 20 Debug.Print "in Sub-X-Wert von a = " & a Ende Sub Sub Y() a = 10 Call X(a) Debug.Print "in sub Y value of a = " & a End Sub
Hier haben wir also zwei Unterprogramme. Erstes Unterteil ist X, das ein Variantenargument als . annimmt NachRef.
(Sie können das Schlüsselwort ByRef weglassen. Dies ist die Standardeinstellung.)
Als nächstes setzt es den Wert von a = 20 end gibt dann den Wert von a aus.
Sub Ja ist das Hauptunterprogramm, das das Unterprogramm aufruft x. Es setzt den Wert von a=10 ruft dann Unterprogramm X auf und geht weiterein als Argument. Dann druckt es den Wert von ein im Y.
Wenn Sie Sub Y ausführen, erhalten Sie dies nun als Ausgabe.
im Sub-X-Wert von a = 20
im Sub-Y-Wert von a = 20
Fazit: Der Wert von Original a wird durch Sub X verändert und für beide Subs auf 20 gesetzt.
Sie können sehen, dass beim Ausführen von Sub Y der Anfangswert von a 10 war. Y ruft X(a) auf. X setzt den Wert a=20. Es druckt „im Sub-X-Wert von a = 20“. Die Steuerung geht zurück zu y und druckt im Sub-Y-Wert von a = 20.
Dies ist die Wirkung des ByRef-Arguments.
ByVal Beispiel:
Dies ist ein ByVal-Beispiel
Sub X(ByVal a Als Variante) a = 20 Debug.Print "in Sub-X-Wert von a = " & a Ende Sub Sub Y() a = 10 Call X(a) Debug.Print "in sub Y value of a = " & a End Sub
Beide Beispiele sind identisch mit dem einzigen Unterschied in der Argumentübergabe. Hier in X werden Argumente als ByVal deklariert. Wenn Sie dieses Mal die Y-Subroutine ausführen, lautet die Ausgabe:
im Sub-X-Wert von a = 20
im Sub-Y-Wert von a = 10
Fazit: Der Wert von Original a wird NICHT durch Sub X verändert. Er beträgt 20 für X und 10 für Y.
Wenn Y X mit a aufruft, sendet es nur den Wert von a, nicht die Adresse von a. Daher wird jede in a vorgenommene Änderung nicht in der ursprünglichen Variablen widergespiegelt.
Zum Test, wenn Druckwert von ein in X, bevor es auf 20 gesetzt wird, wird 10 gedruckt. Da die 10 mit byVal an a in X übergeben wird. Mit ByRef haben Sie gesendet a von Y zu a von X.
Es ist eine einfache Frage, aber viele von uns verwechseln dies in der VBA-Interviewfrage. Der Grund ist, dass wir es nicht oft nutzen können. Meistens kopieren wir den Wert in eine andere Variable.
Also ja, Leute, das ist der Unterschied zwischen den Argumenten ByRef und ByVal in Excel VBA. Lassen Sie es mich wissen, wenn Sie Zweifel an diesem Thema oder einem anderen VBA- oder Excel-Thema haben. Der Kommentarbereich gehört ganz Ihnen.
Hinzufügen und Speichern einer neuen Arbeitsmappe mit VBA in Microsoft Excel 2016
Anzeigen einer Nachricht in der Excel VBA-Statusleiste
Deaktivieren Sie Warnmeldungen mit VBA in Microsoft Excel 2016
Populäre Artikel:
Die SVERWEIS-Funktion in Excel
ZÄHLENWENN in Excel 2016
So verwenden Sie die SUMIF-Funktion in Excel