Was ist ByRef in VBA?

Byref in VBA steht für "By Reference". Mit Hilfe von VBA Byref können wir den ursprünglichen Wert als Ziel festlegen, ohne den in Variablen gespeicherten Wert zu ändern. Mit anderen Worten, wir übergeben den Wert direkt an Sub-Prozeduren, anstatt die regulären Methoden zum Definieren und Zuweisen der Werte zu Variablen zu durchlaufen.

In VBA ByRef definieren wir die Unterprozedur, nachdem wir die Regel für ByRef festgelegt haben. Dies könnte unterhalb der Unterprozedur erfolgen, in der der Code geschrieben werden soll. In ByRef definieren wir die Variable neu, die in der Subprozedur verwendet wird. Und es funktioniert nur dann einwandfrei, wenn wir die ByRef-Bedingung in unserer Unterprozedur aufrufen.

Wie Verwenden der ByRef-Funktion in Excel VBA?

Nachfolgend finden Sie verschiedene Beispiele für die Verwendung der ByRef-Funktion in Excel mithilfe von VBA-Code.

Sie können diese VBA ByRef Excel-Vorlage hier herunterladen - VBA ByRef Excel-Vorlage

Excel VBA ByRef - Beispiel # 1

Lassen Sie uns zunächst lernen, wie man eine ByRef in VBA einfügt. Befolgen Sie dazu die folgenden Schritte. In diesem Beispiel wird gezeigt, wie VBA ByRef für eine einfache mathematische Subtraktionsarbeit verwendet wird. Dafür bräuchten wir ein Modul.

Schritt 1: Gehen Sie zu VBA und öffnen Sie ein Modul über die Menüoption Einfügen (siehe unten).

Schritt 2: Schreiben Sie im neu geöffneten Modul die Unterkategorie von VBA ByRef wie unten gezeigt.

Code:

 Sub VBA_ByRef1 () End Sub 

Schritt 3: Definieren Sie nun eine Variable. Nehmen wir an, es ist ein A als Ganzzahl.

Code:

 Sub VBA_ByRef1 () Dim A As Integer End Sub 

Schritt 4: Geben Sie der Variablen A eine beliebige Zahl. Diese Zahl sei 1000.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 End Sub 

Schritt 5: Um den in Variable A gespeicherten Wert zu drucken, würden wir Msgbox verwenden.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub 

Schritt 6: Jetzt kompilieren wir diesen Code und führen ihn aus, indem wir wie unten gezeigt auf die Schaltfläche "Abspielen" klicken. Wir erhalten ein Meldungsfenster mit dem Wert 1000, der in Variable A gespeichert ist.

Wenden Sie nun VBA ByRef an, erstellen Sie eine weitere Unterkategorie unter der ersten und weisen Sie mit ByRef die definierte Variable aus der ersten Unterkategorie zu.

Schritt 7: Auf diese Weise ermöglichen wir der zweiten Unterkategorie, die in Variable A gespeicherten Werte zu verwenden.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) End Sub 

Schritt 8: Rufen Sie nun die Variable A hier erneut auf und subtrahieren Sie einen beliebigen Wert von der Variablen A, um den Ausgabewert in derselben Variablen zu erhalten. Subtrahieren wir 100 vom Wert der Variablen A, um eine messbare Zahl zu erhalten.

Code:

 Sub VBA_ByRef1 () Abm. A als Ganzzahl A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A als Ganzzahl) A = A - 100 End Sub 

Schritt 9: Wenn wir nun jeden Schritt des Codes kompilieren, werden wir feststellen, dass der Cursor, wenn er die Variable A erreicht hat, nur 0 gespeichert hat.

Schritt 10: Wenn der Cursor End Sub erreicht hat, wird die Ausgabe als 1000 im Meldungsfeld angezeigt.

Schritt 11: Dies liegt daran, dass wir die ByRef nicht der ersten Unterkategorie zugewiesen haben. Nun werden wir den Namen der Unterkategorie vor der Meldungsfeldfunktion der ersten Unterkategorie zuweisen und sehen, was passieren wird.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Schritt 12: Führen Sie nun den vollständigen Code erneut aus. Wir werden sehen, dass der zweite Wert, der in der Variablen A als 100 gespeichert ist, vom ersten Wert 1000 subtrahiert wurde. Als Ergebnis haben wir die Ausgangsnachricht als 900 erhalten.

Schritt 13: Dies ist der Hauptvorteil der Verwendung von ByRef. Wir müssen nicht mehrere Variablen für einen einzelnen Job definieren. Nur eine Variable reicht aus, um die gesamte Aufgabe auf unterschiedliche Weise auszuführen. Wir können mehr als ein ByRef in einem einzigen Modul verwenden.

Um zu rechtfertigen, was wir verstanden haben, fügen wir im selben Modul ein weiteres ByRef hinzu.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) End Sub 

Schritt 14: In dieser Unterkategorie verwenden wir die Multiplikation.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) A = A * 2 End Sub 

Schritt 15: Kompilieren Sie den Code erneut und führen Sie ihn erneut aus. Wir werden sehen, dass der aus den obigen Schritten erhaltene Wert als 900 mit 2 multipliziert wird, um 1800 als Ausgabe zu erhalten.

Excel VBA ByRef - Beispiel # 2

In diesem Beispiel werden wir sehen, wie ByRef mit anderen Arten von Ganzzahlen arbeitet.

Schritt 1: Öffnen Sie ein Modul und schreiben Sie die Unterkategorie wie unten gezeigt.

Code:

 Sub VBA_ByRef4 () End Sub 

Schritt 2: Definieren Sie nun eine Variable A als Double. Dadurch können wir Dezimalwerte verwenden.

Code:

 Sub VBA_ByRef4 () Dim A As Double End Sub 

Schritt 3: Weisen Sie der Variablen A einen beliebigen Dezimalwert zu.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 End Sub 

Schritt 4: Verwenden Sie jetzt erneut das Meldungsfeld, um den in Variable A gespeicherten Wert anzuzeigen.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub 

Wenn wir nun den Code ausführen, würden wir 1.23 als Ausgabe erhalten.

Schritt 5: Auf andere Weise definieren wir mit Function ByRef als Double mit der Variablen A.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Unterfunktion AddTwo (ByRef A As Double) As Double End-Funktion 

Schritt 6: Fügen Sie nun eine beliebige Zahl zu Variable A hinzu. Nehmen wir an, es ist 10.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Unterfunktion AddTwo (ByRef A As Double) As Double A = A + 10 Endfunktion 

Schritt 7: Verwenden Sie diese definierte ByRef-Funktion erneut in der ersten Unterkategorie. Hier sehen wir zwei Meldungsfelder, eines für die Variable A und eines für ByRef.

Code:

 Sub VBA_ByRef4 () A als Doppel A = 1, 23 MsgBox AddTwo (A) MsgBox A End Unterfunktion AddTwo (ByRef A als Doppel) As Doppel A = A + 10 End Funktion 

Schritt 8: Dasselbe würde sich auch im Meldungsfeld widerspiegeln.

Schritt 9: Und im nächsten Durchlauf wird der Wert 10 in den ursprünglichen Variablenwert von 1, 23 umgewandelt, wie unten gezeigt.

Auf diese Weise nimmt VBA Byref die Referenz des einmal definierten Werts und füllt dann die Ausgabe gemäß der neuen Bedingung.

Vor- und Nachteile von VBA ByRef

  • Wenn Sie große Codes schreiben, sparen Sie viel Zeit, indem Sie die bereits definierte Variable berücksichtigen, damit ihr Wert immer wieder verwendet werden kann.
  • Wir müssen nicht viele Variablen gemäß der Formel definieren, die wir anwenden möchten.
  • Wir können viele ByRef-Bedingungen in einem einzigen Modul anwenden, ohne den Prozess zu stören.
  • Wir können VBA Byref nicht in komplexen Codestrukturen verwenden.

Dinge, an die man sich erinnern sollte

  • Wenn mehr als eine ByRef-Bedingung berücksichtigt wird, basiert die Ausgabe auf der zuletzt definierten ByRef-Unterprozedur, berücksichtigt jedoch auch alle zuvor verwendeten ByRef-Bedingungen.
  • Die endgültige Ausgabe wird sequenziell verarbeitet. Nicht nur die neueste.
  • Dieser Vorgang kann nicht durch Aufzeichnen des Makros ausgeführt werden.
  • Wir können den in jeder Stufe der Variablen gespeicherten Wert sehen, indem wir den Code kompilieren.
  • Speichern Sie die Excel-Datei anschließend im Excel-Format "Macro Enabled", damit in Zukunft kein Code verloren geht.

Empfohlene Artikel

Dies ist eine Anleitung zu VBA ByRef. Hier wird die Verwendung der ByRef-Funktion in Excel mithilfe von VBA-Code zusammen mit praktischen Beispielen und einer herunterladbaren Excel-Vorlage erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Anleitung zur VBA UBound-Funktion
  2. OFFSET-Excel-Funktion (Beispiel, Verwendung)
  3. Erstellen Sie einen Hyperlink in Excel VBA
  4. Wie benutze ich den Excel-Füllgriff?

Kategorie: