VBA ByRef - Übergeben Sie das Argument mit der Excel VBA ByRef-Funktion

Excel VBA ByRef-Funktionsargument

ByRef in VBA ist eine Funktion, die als Referenz aufgerufen wird, wobei wir auf alle Argumente in unserem Code verweisen, wenn wir benutzerdefinierte Funktionen erstellen und den Wert einer Variablen verwenden möchten, die zuvor vor der von uns verwendeten Funktion ByRef definiert wurde Die zu verwendende Syntax ist einfach als Funktion Funktionsname (ByRef-Variable als Datentyp).

Mit Byref können wir auf den ursprünglichen Variablenwert verweisen, ohne den Variablenwert zu ändern. Dies entspricht der direkten Übergabe des Variablenwerts an die VBA-Unterprozedur oder die VBA-Funktion.

Wie übergebe ich ein Argument mit dem VBA ByRef-Argument?

Beispiel 1

Schauen Sie sich zum Beispiel den folgenden VBA-Code an.

Code1:

Sub Procedure1 () Dim k As Integer k = 50 Procedure2 k MsgBox k End Sub

Code2:

Unterprozedur2 (ByRef k als Ganzzahl) k = k + 10 End Sub

In der ersten Prozedur habe ich die Variable "k" als Integer deklariert.

Dann habe ich dieser Variablen den Wert 50 zugewiesen.

Danach habe ich eine neue Zeile hinzugefügt, dh

Prozedur2 k

Dies ist der zweite Prozedurname. In dieser Prozedur habe ich die Variable in der Klammer in VBA als String deklariert, aber das Wort "ByRef" verwendet.

ByRef k As Integer

Hier habe ich den Wert der Variablen "k" als zugewiesen

k = k + 10

Ok, jetzt werde ich den Code Schritt für Schritt ausführen, indem ich die Taste F8 drücke.

Drücken Sie die Taste F8 noch zweimal und setzen Sie einen Cursor auf die Variable "k", um den Wert der Variablen "k" anzuzeigen.

Da wir den Wert als 50 zugewiesen haben, wird der Wert als 50 angezeigt. Jetzt wurde die Zeile Procedure2 k hervorgehoben, die der zweite Prozedurname ist.

Wenn ich jetzt die Taste F8 drücke, springt sie aus der aktuellen Prozedur heraus und geht zur zweiten Prozedur über.

Da wir nun das ByRef-Wort verwendet haben, enthielt es den Variablenwert „k“ aus der obigen Prozedur.

Drücken Sie zweimal die Taste F8. Es wird auf die vorherige Unterprozedur zurückgegriffen. Wenn Sie im zweiten Verfahren bemerken, habe ich die Formel als k = k + 10 angewendet. Das heißt, der Wert „k“ ist 50 und addiert 10 weitere zu dem Wert, dh insgesamt 60.

Jetzt wird der Code in der ersten Prozedur ausgeführt, und in dieser Prozedur ist der Wert der Variablen "k" 50. Drücken Sie jedoch die Taste F8 und sehen Sie das Ergebnis in einem Meldungsfeld.

Wir haben in diesem Verfahren das Ergebnis als 60 anstelle des Standardwerts von 50 erhalten.

Der Grund, warum wir 60 bekommen haben, weil wir im zweiten Verfahren „ByRef“ angewendet haben, sodass das Gleichungsergebnis (k = k + 10) auf das aktuelle Verfahren übertragen wurde.

Hier ist der Wert der ersten Variablen "k" 50, und in der zweiten Prozedur ist der Wert der Variablen "k" k + 10, dh 60, was zur ersten Prozedur übertragen wird.

In der ersten Prozedur war der ursprüngliche Wert der Variablen "k" 50, daher hat By Ref den ursprünglichen Wert durch Ausführen der Gleichung k = k + 10 von 50 auf 60 geändert, dh k = 50 + 10 = 60.

Beispiel 2

Schauen Sie sich nun ein weiteres Beispiel an.

Code 1:

Sub P1 () Dim MyNumber As Long MyNumber = 1 Aufruf von Change_ByRef (MyNumber) 'MyNumber wird durch die Change_ByRef-Prozedur geändert. MsgBox "My Number is now:" & MyNumber End Sub


Code 2:

Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 End Sub

Dies funktioniert genauso wie der vorherige Code.

Anfangs ist der Wert der Variablen "MyNumber" 1. Dann nennen wir die folgende Prozedur beim Namen

Rufen Sie Change_ByRef (MyNumber) auf.

In diesem Verfahren beträgt der Wert der Variablen 14.

Wenn also zur vorherigen Prozedur zurückgekehrt wird, wird der Variablen der neue Wert als 14 zugewiesen.

Interessante Beiträge...