In diesem Tutorial erfahren Sie, wie Sie einen Wert aus einer Unterprozedur in VBA zurückgeben.
Eine Unterprozedur ist nicht dafür ausgelegt, einen Wert zurückzugeben - dafür wird eine Funktionsprozedur verwendet. Es kann jedoch vorkommen, dass Sie Code in einer Unterprozedur ausführen, in der Sie einen Wert aus dieser Unterprozedur abrufen müssen. Verwenden Sie dazu Module oder globale Variablen oder verwenden Sie eine Unterprozedur, um ein Excel-Blatt zu füllen.
Verwenden von Variablen, um einen Wert zurückzugeben
Sie können Variablen auf Modulebene deklarieren. Dabei können diese Variablen überall innerhalb des Moduls verwendet werden und die Variablen behalten ihre Werte. Um eine Variable auf Modulebene zu deklarieren, deklarieren Sie einfach die Variable oben in Ihrem Codemodul:
123456789 | Option explizitDim dblQty als DoubleUntertestA()'ruf den TestB-Sub anTestB aufrufen'Variablenwert im Modulfenster anzeigenDebug.Print dblQtyEnd Sub |
1234 | UntertestB()'die Modulvariable füllendblMenge = 900End Sub |
Um diese zusammenzusetzen, würden wir TestA ausführen, das wiederum TestB aufrufen und uns den Wert 900 im unmittelbaren Fenster geben würde.
Dies würde nur innerhalb des Moduls funktionieren, 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 Ihren Projektmodulen zu verwenden.
Verwenden einer Unterprozedur zum Ausfüllen einer Excel-Tabelle
Die folgende Unterprozedur füllt den Bereich A1 bis C1 direkt in Ihrem Excel-Blatt aus und gibt so Werte an die Zellen aus der Unterprozedur zurück.
12345 | Sub PopulateRange()Bereich("A1") = "Produkt"Bereich("B1") = "Menge"Range("C1") = "Kosten"End Sub |
Sie können dann in einem anderen Verfahren auf diese Werte verweisen, indem Sie auf die Zellenwerte verweisen:
1234567 | Sub RetrieveRange()Dim Product as String, Quant as long, Cost as doubleProdukt = Reichweite("A1")Quant = Bereich("B1")Kosten = Reichweite("C1")End Sub |