Kurs VBA - Procedury VBA w Excelu cz.III

38
Poradnik VBA: Procedury VBA W Excelu

Transcript of Kurs VBA - Procedury VBA w Excelu cz.III

Page 1: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Procedury VBA W Excelu

Page 3: Kurs VBA - Procedury VBA w Excelu cz.III

Szanowni Państwo,

Jeżeli chcecie poznać procedury jakie są

stosowane w VBA w Excelu zapraszamy do

lektury naszej prezentacji.

Więcej informacji o VBA dostępnych na

stronie www.cognity.pl

Page 4: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Procedura typu Function

Kurs VBA

Procedura typu Function

Procedura typu Function, zwana również funkcją, wykonuje określone obliczenia oraz zwraca pojedynczą wartość lub tablicę. Mogą być stosowane w modułach i formułach arkuszy.

Page 5: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Procedura typu Function

Kurs VBA

Procedura typu Functionc.d.

Składnia deklaracji:

[Private | Public| Friend] [Static] FunctionNazwaFunkcji([lista_argumentów])[As typ][instrukcje procedury]

Page 6: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Procedura typu Function

Kurs Excel

Procedura typu Functionc.d.

Składnia deklaracji:

[NazwaFunkcji=wyrażenie][Exit Function] ’natychmiastowe wyjście z funkcji [instrukcje procedury][NazwaFunkcji=wyrażenie]End Function’koniec procedury

Page 7: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Zasięg procedury typu Function

Kurs VBA

Zasięg procedury typu Function

Domyślnie wszystkie procedury typu Function sapubliczne, tzn. są dostępne dla innych procedur z innych modułów.

Page 8: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Poradnik VBA: Zasięg procedury typu Function

Kurs VBA

Zasięg procedury typu Functionc.d.

Dostępność procedury określona jest przez słowa kluczowe:[Private|Public|Friend]-Privateoznacza, ze procedura dostępna jest tylko dla procedur z tego samego modułu.

Page 9: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Zasięg procedury typu Function

Kurs Excel

Zasięg procedury typu Functionc.d.

Ponadto nie jest widoczna w oknie dialogowym Wstawianie funkcji, Public (wartość domyślna) –dostępna dla procedur z innych modułów Friend(tylko w modulachklasy)

Page 10: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Zasięg procedury typu Function

Kurs VBA

Zasięg procedury typu Functionc.d.

Wskazuje, że procedura jest widoczna w projekcie, a nie jest widoczna dla kontrolera instalacji obiektu.

Page 11: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wartości zwracane

Kurs VBA

Wartości zwracane

Wartość zwracana przez funkcję należy przypisać nazwie funkcji (w trakcie procedury można wielokrotnie dokonywać takiej operacji). Domyślnym typem zwracanym przez funkcję jest typ Variant.

Page 12: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs Excel

Przekazywanie argumentów

Argumentami mogą być zmienne, stałe literały lub wyrażenia. Argumenty przekazywane do procedury zawarte są w części [Lista_argumentów]. Poszczególne oddzielają od siebie przecinki.

Page 13: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs VBA

Przekazywanie argumentów c.d.

Składnia argumentu lista_argumentów oraz jej części:

[Optional][ByVal|ByRef][ParamArray] nazwa_zmiennej[()][As typ][=wartość domyślna]

Page 14: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs VBA

Przekazywanie argumentów c.d.

Gdzie:

[Optional]

[ByVal]

Wskazuje, argument nie jest wymagany

Wskazuje, ze argument jest przekazywany przez wartość

Page 15: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs Excel

Przekazywanie argumentów c.d.

[ByRef]

[ParamaArray]

Wskazuje, że argument jest przekazywany przez referencję (domyślny sposób)

Używany jako ostatni argument w lista_argumentów, który wskazuje, że jest to opcjonalna tablica elementów typu Variant.

Page 16: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs VBA

Przekazywanie argumentów c.d.

[ParamaArray]Pozwala na przekazywanie dowolnej liczby argumentów. Nie może być używana z ByVal, ByRef lubOptional.

Page 17: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs VBA

Przekazywanie argumentów c.d.

Przykłady:

Function funkcja() ’bez argumentów…End function

Functionfunkcja2(liczba1, liczba2) As Long’stała określona liczba argumentów (maksymalnie do 60)…End Function

Page 18: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs Excel

Przekazywanie argumentów c.d.

Przykłady:

Functionfunkcja3(tablica) As Double… End Function

Functionfunkcja4(ParamaArray lista() As Variant) As Double’nieokreślona liczba argumentów …End Function

Page 19: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs VBA

Przekazywanie argumentów c.d.

Przykłady:Fubctionfunkcja59zakres As Variant, OptionalkomorkaAsVariant=False) As Double ’argumenty wymagane i opcjonalne …End Function

Page 20: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs VBA

Przekazywanie argumentów c.d.

Domyślny typ argumentu to Variant. Tylko dla argumentów Optional można określić stałą jako wartość domyślną.Do sprawdzenia czy argument Optionalzostał przekazany do procedury, można wykorzystać funkcje IsMissing.

Page 21: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Przekazywanie argumentów

Kurs Excel

Przekazywanie argumentów c.d.

Jeżeli argument jest typu Object, to wartość domyślna nie może mieć wartości Nothing.

Page 22: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury typu Function

Kurs VBA

Wywoływanie procedury typu Function

Procedury typu Function można wywołać w formule arkuszy, z poziomu okna Immediateoraz innych procedur.

Page 23: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury typu Function

Kurs VBA

Wywoływanie procedury w tym samym module

Przykład: Wynik=nazwa_procedury (argument1, argument2,…argument-n)Wynik=Application.Run(”nazwa_procedury”, argument1, argument2, …argument-n)

Page 24: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury typu Function

Kurs Excel

Wywoływanie procedury w tym samym module c.d.

Przykład:

Wynik=ObliczV(1)Wynik=Application.Run (”ObliczV”,2)

Page 25: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym module

Kurs VBA

Wywoływanie procedury umieszczonej w innym module

Przykład:

Wynik=nazwa_modulu.nazwa_procedury (argument1, argument2, …argument-n)

Page 26: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym module

Kurs VBA

Wywoływanie procedury umieszczonej w innym module c.d.

Przykład:

Wynik=Application.Run(’nazwa_modulu.nazwa_procedury”, argument1, argument2,…argument-n)

Page 27: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym module

Kurs Excel

Wywoływanie procedury umieszczonej w innym module c.d.

Przykład:

Wynik=Module.ObliczV(10)Wynik=Application.Run(’’Module.ObliczV”, 20)

Page 28: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs VBA

Wywoływanie procedury umieszczonej w innym skoroszycie

Przykład:

Wynik=nazwa_projektu.nazwa_modulu.nazwaprocedury (argument1, argument2, …argument-n)

Page 29: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs VBA

Wywoływanie procedury umieszczonej w innym skoroszycie c.d.

Przykład:

Wynik=Application.Run(”nazwa_projektu.nazwa_modulu, nazwa_procedury”, argument1, argument2,...argument-n)

Page 30: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs Excel

Wywoływanie procedury umieszczonej w innym skoroszycie c.d.

Przykład:

Wynik=Projekt.Module1.ObliczV(100) ’konieczność utworzenia odwołania do Projektu (edytor VBE-menu Tools-polecenie References…)

Page 31: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs VBA

Wywoływanie procedury umieszczonej w innym skoroszycie c.d.

Przykład:

Wynik=Application.Run (” ’D:\test.xls’! Module1.ObliczV’’, 200) ’brak konieczności tworzenia odwołania do Projektu1(menu Tools-polecenie References…)

Page 32: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs VBA

Procedury (funkcje) bibliotek DLL

Korzystanie z procedur i funkcji zadeklarowanych w zewnętrznych bibliotekach możliwe jest po uprzedniej deklaracji za pomocą instrukcji Declare.

Page 33: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs Excel

Procedury (funkcje) bibliotek DLL c.d.

Składnia1:

Instrukcja musi być umieszczona w części deklaracji każdego modułu.

[Private|Public] Declare SubNazwaProceduryLib”NazwaBiblioteki”[Alias ”NazwaAlias”][([lista argumentów])][As

Page 34: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs VBA

Procedury (funkcje) bibliotek DLL c.d.

Składnia2:

[Private|Public] Declare FunctionNazwaFunkcji Lib”Nazwabiblioteki” [Alias ”NazwAlias”][([lista argumentów])] [As typ]

Page 35: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs Excel

Procedury (funkcje) bibliotek DLL c.d.

Składnia argumentu lista_argumentuoraz jej częśći:

[Optional][ByVal] | ByRef][ParamArray] nazwa_zmiennej[()] [As typ]

Page 36: Kurs VBA - Procedury VBA w Excelu cz.III

Poradnik VBA: Wywoływanie procedury umieszczonej w innym skoroszycie

Kurs Excel

Procedury (funkcje) bibliotek DLL c.d.

Przykład:

Private DeclareSub MessagBeepLib ”User32” (ByVa1 N As Integer)Call MessageBeep(0) ’wygenerowanie dźwięku.