Ten samouczek nauczy Cię, jak zwrócić wartość z procedury podrzędnej w VBA.
Procedura podrzędna nie jest przeznaczona do zwracania wartości - do tego służy procedura funkcji. Może się jednak zdarzyć, że uruchomisz jakiś kod w procedurze sub, gdzie będziesz potrzebować wartości z tej procedury sub. Sposobem na to jest użycie zmiennych modułowych lub globalnych lub użycie procedury podrzędnej do wypełnienia arkusza Excel.
Używanie zmiennych do zwracania wartości
Możesz deklarować zmienne na poziomie modułu. W takim przypadku zmienne te mogą być używane w dowolnym miejscu w module, a zmienne zachowują swoje wartości. Aby zadeklarować zmienną na poziomie modułu, po prostu zadeklaruj zmienną na górze modułu kodu:
123456789 | Opcja WyraźnaDim dblQty jako DoublePodtestA()„zadzwoń pod testB”Zadzwoń do testu B'pokaż wartość zmiennej w oknie modułuDebug.Drukuj dblQtyNapis końcowy |
1234 | PodtestB()'wypełnij zmienną modułudblIlość = 900Napis końcowy |
Aby je połączyć, uruchomilibyśmy TestA, który z kolei wywołałby TestB i dałby nam wartość 900 w bezpośrednim oknie.
Działałoby to tylko w module, ponieważ zmienna została zadeklarowana przy użyciu instrukcji Dim na poziomie modułu.
Zmienna globalna
Możesz zadeklarować zmienną na poziomie globalnym, aby używać jej w modułach projektu.
Korzystanie z procedury podrzędnej do wypełniania arkusza Excel
Poniższa procedura podrzędna bezpośrednio wypełni zakres od A1 do C1 w arkuszu Excela, zwracając w ten sposób wartości do komórek z procedury podrzędnej.
12345 | Podzakres populacji()Zakres("A1") = "Produkt"Zakres("B1") = "Ilość"Zakres("C1") = "Koszt"Napis końcowy |
Następnie możesz odwołać się do tych wartości w innej procedurze, odwołując się do wartości komórek:
1234567 | Podrzędny zakres pobierania()Dim Product as String, Quantity as long, Cost as doubleProdukt = Zakres("A1")Ilość = Zakres("B1")Koszt = Zakres("C1")Napis końcowy |