Top Banner
Poradnik VBA: Procedury VBA W Excelu
38

Kurs VBA - Procedury VBA w Excelu cz III

Apr 02, 2016

Download

Documents

Cognity

Tematem prezentacji jest trzecia część procedur języka programowania VBA. Jest to materiał szczegółowo omawiany podczas Kursu VBA w Excelu. Więcej informacji o szkoleniach i ich terminach dostępne na stronie www.cognity.pl
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Kurs VBA - Procedury VBA w Excelu cz III

Poradnik VBA: Procedury VBA W Excelu

Page 2: Kurs VBA - Procedury VBA w Excelu cz III

Poradnik VBA: Procedury

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 Function c.d.Składnia deklaracji:

[Private | Public| Friend] [Static] Function NazwaFunkcji ([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 Function c.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 sa publiczne, 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 Function c.d.

Dostępność procedury określona jest przez słowa kluczowe:[Private|Public|Friend]-Private oznacza, 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 Function c.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 modulach klasy)

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

Poradnik VBA: Zasięg procedury typu Function

Kurs VBA

Zasięg procedury typu Function c.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 lub Optional.

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

Function funkcja2(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:

Function funkcja3(tablica) As Double… End Function

Function funkcja4(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:

Fubction funkcja59zakres As Variant, Optional komorka AsVariant=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 Optional został 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 Immediate oraz 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 skoroszyciePrzykład:

Wynik=nazwa_projektu.nazwa_modulu.nazwa procedury (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 Sub NazwaProcedury Lib ”NazwaBiblioteki”[Alias ”NazwaAlias”][([lista argumentów])][As typ]

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 Function NazwaFunkcji 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_argumentu oraz 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 Declare Sub MessagBeep Lib ”User32” (ByVa1 N As Integer)Call MessageBeep(0) ’wygenerowanie dźwięku.