VBA – Einen Wert aus einer Unterprozedur (Sub) zurückgeben
In this Article
In diesem Tutorial zeigen wir Ihnen, wie Sie einen Wert aus einer Unterprozedur in VBA zurückgeben können.
Eine Unterprozedur ist nicht dafür gedacht, einen Wert zurückzugeben. Dafür wird eine Funktionsprozedur verwendet. Es kann jedoch vorkommen, dass Sie einen Code in einer Unterprozedur ausführen und einen Wert aus dieser abrufen müssen. Hierfür können Sie Modul- oder globale Variablen verwenden oder eine Unterprozedur zum Ausfüllen eines Excel-Blatts nutzen.
Variablen verwenden, um einen Wert zurückzugeben
Sie können Variablen auf Modulebene deklarieren. Wenn Sie dies tun, können diese Variablen überall innerhalb des Moduls verwendet werden und sie behalten ihre Werte bei. Um eine Variable auf Modulebene zu deklarieren, deklarieren Sie diese einfach am Anfang Ihres Codemoduls:
Option Explicit
Dim dblMenge as Double
Sub TestA()
'Aufruf der Sub TestB
Call TestB
'Den Variablenwert im Modulfenster anzeigen
Debug.Print dblMenge
End Sub
Sub TestB()
'Die Modulvariable belegen
dblMenge = 900
End Sub
Dazu führen wir TestA aus, die wiederum TestB aufruft und uns den Wert 900 im Direktfenster anzeigt.
Dies funktioniert nur innerhalb des Moduls, da die Variable mit der Dim-Anweisung auf Modulebene deklariert wurde.
Globale Variable
Sie können die Variable auf globaler Ebene deklarieren, um sie in allen Modulen Ihres Projekts zu verwenden.
Verwendung einer Unterprozedur zum Auffüllen eines Excel-Blatts
Eine weitere Möglichkeit, auf die von einer Unterprozedur berechneten Werte zu verweisen, besteht darin, die Daten einfach in ein Excel-Blatt zu schreiben und dann in einer anderen Prozedur darauf zu verweisen.
Sub BereichAuffuellen()
Range("A1") = "Produkt"
Range("B1") = "Menge"
Range("C1") = "Kosten"
End Sub
Sie können dann in einer anderen Prozedur durch Verweis auf die Zellenwerte auf diese Werte verweisen:
Sub BereichAbrufen()
Dim Produkt As String, Menge As long, Kosten As double
Produkt = Range("A1")
Menge = Range("B1")
Kosten = Range("C1")
End Sub