Obiekty w VBA

59
1 Czym jest obiekt? jest „przedmiotem” kontrolowanym przez VB, obiektem jest arkusz, wykres, pasek narzędzi, przycisk, Excel ma ponad 100 obiektów. Obiekty organizowane są w hierarchii niektóre z nich zawierają w sobie inne obiekty, np. sam Excel stanowi obiekt zwany aplikacją, zaś obiekt aplikacja zawiera w sobie obiekty takie jak: arkusz, paski narzędzi itd. Obiekty w VBA

description

Obiekty w VBA. Czym jest obiekt? jest „przedmiotem” kontrolowanym przez VB, obiektem jest arkusz, wykres, pasek narzędzi, przycisk, Excel ma ponad 100 obiektów. Obiekty organizowane są w hierarchii niektóre z nich zawierają w sobie inne obiekty, - PowerPoint PPT Presentation

Transcript of Obiekty w VBA

Page 1: Obiekty w VBA

1

Czym jest obiekt? jest „przedmiotem” kontrolowanym przez VB, obiektem jest arkusz, wykres, pasek narzędzi,

przycisk, Excel ma ponad 100 obiektów.

Obiekty organizowane są w hierarchii niektóre z nich zawierają w sobie inne obiekty, np. sam Excel stanowi obiekt zwany aplikacją, zaś

obiekt aplikacja zawiera w sobie obiekty takie jak: arkusz, paski narzędzi itd.

Obiekty w VBA

Page 2: Obiekty w VBA

Elementy programowania 2

Kolekcje niektóre obiekty są do siebie podobne, np. arkusze w

skoroszycie, kolekcja to zbiór danych obiektów, kolekcje są również obiektami, najczęściej używane kolekcje obiektów Excela:

kolekcja Sheets (zawiera arkusze i wykresy), kolekcja Workbooks, kolekcja Worksheets, kolekcja Windows.

Page 3: Obiekty w VBA

3

Właściwości obiektów właściwości – to zbiór cech, które opisują obiekt i czynią go

użytecznym,np. obiekt Workbook ma własność Name, a obiekt Range: Name, Row, Font itd.

właściwość w danej chwili może przyjmować tylko jedną wartość,

ustawiane mogą być w oknie Właściwości lub bezpośrednio w kodzie zdarzeń,

niektóre właściwości są również obiektami, np. dla obiektu Range – można zmienić wygląd wybranego zakresu komórek przez zmianę własności Font, jednak Font może mieć różne nazwy, rozmiary itd. (cechy te są właściwościami czcionki); ponieważ Font ma właściwości – musi być obiektem!

Page 4: Obiekty w VBA

Elementy programowania 4

Metody każdemu obiektowi przypisano odpowiedni

zbiór metod, własności zmieniają wygląd obiektu,

natomiast za pomocą metod możliwe jest wykonanie określonych czynności,

mogą mieć opcjonalne parametry, które określają w jaki sposób metoda ma być wykonana,

Page 5: Obiekty w VBA

Elementy programowania 5

Przykład metodyObiekt Range posiada metody: wymazujące zawartość komórki: ClearConntents, wymazujące format komórki: ClearFormats, lub wymazujące wszystko (format i zawartość):

Clear,

Page 6: Obiekty w VBA

Elementy programowania 6

Jak wyszukiwać obiekty?

Aby łatwiej zrozumieć hierarchię obiektów np. Excela, korzystamy z diagramu obiektów w Pomocy Visual Basica

Page 7: Obiekty w VBA
Page 8: Obiekty w VBA

8

RangeWorksheet.RangeWorkbook.Worksheet.RangeApplication.Workbook.Worksheet.Range

Page 9: Obiekty w VBA

Elementy programowania 9

Składnia i gramatyka

zasada 1: Odwoływanie się do właściwości obiektu

Range(„A4”).Value

obiekt właściwość

ActiveCell.Offset(3,2)

obiekt właściwość

argumenty

Page 10: Obiekty w VBA

Elementy programowania 10

Składnia i gramatyka

zasada 2: Zmiana wartości danej własności obiektu na inną

Range(„A4”).Value = 25

obiekt właściwość wartość

Range(„A4”).Value = 25ActiveCell.Font.Name = „Dzień Dobry”ActiveCell.Font.Bold = True

Page 11: Obiekty w VBA

Elementy programowania 11

zasada 3: Odczytywanie bieżącej wartości danej właściwości obiektu

Składnia i gramatyka

obiekt właściwość

Granica = Range(„A4”).Value

zmienna

Page 12: Obiekty w VBA

Elementy programowania 12

zasada 4: Odwoływanie się do metody danego obiektu

Składnia i gramatyka

obiekt metoda

Range(„A4”).ClearContents

Page 13: Obiekty w VBA

Elementy programowania 13

Operacje związane z komórkami

jak je zaznaczać? jak wpisywać dane do komórek? jak nadać im nazwy? jak się formatuje? przesuwa? kopiuje? wymazuje?

Page 14: Obiekty w VBA

Elementy programowania 14

Obiekt: RANGE odwołanie do pojedynczej komórki lub

zakresu komórek, Range jest obiektem obiektu Worksheet, dostęp do obiektu Range umożliwiają trzy

własności: Range, Cells, Offset.

Page 15: Obiekty w VBA

15

Właściwość Range zwraca komórkę lub zakres komórek, odwołanie należy podać w stylu A1 i w cudzysłowie:

Czynność w VBA Kod

Wybierz pojedynczą komórkę np. A5 Range(„A5”).Select

Wybierz zakres komórek np. A6:A10 Range(„A6:A10”).Select

Wybierz kilka nie przylegających do siebie komórek

Range(„A1, B6, C12).Select

Wybierz kilka nie przylegających do siebie komórek i zakresów

Range(„A11:D11, B6, C12).Select

Page 16: Obiekty w VBA

Właściwość Cells wymaga zazwyczaj dwóch argumentów

Argument 1: wskazuje numer wiersza Argument 2: wskazuje numer kolumny

Czynność w VBA Kod

Wybierz pojedynczą komórkę np. A5

Cells(5, 1).Select

lub

Cells(5, „A”).Select

Wybierz zakres komórek np. A6:A10 Range(Cells(6, 1), Cells(10, 1)). Select

Wybierz wszystkie komórki w arkuszu Cells.Select

Page 17: Obiekty w VBA

Elementy programowania 17

Arkusz jako kolekcja komórek

Czynność w VBA Kod

Wybierz komórkę A1

Cells(1).Select

lub

Cells.Item(1).Select

Wybierz komórkę C1Cells(3).Select

lub

Cells.Item(3).Select

Wybierz komórkę A2Cells(257).Select

lub

Cells.Item(257).Select

Page 18: Obiekty w VBA

Elementy programowania 18

Właściwość Offset w zaznaczaniu komórek jest to inny sposób odwoływania się do komórek, nie zawsze wiemy gdzie aktualnie się znajdujemy na

arkuszu, właściwość Offset oblicza nowy zakres komórek

przesuwając zakres początkowy o określoną liczbę wierszy (kolumn) w górę lub dół (w prawo, lewo),

zwraca obiekt Range adresowany względem lewego górnego narożnika bieżącego obiektu Range,

Page 19: Obiekty w VBA

Elementy programowania 19

Czynność w VBA Kod

Wybierz komórkę znajdującą się o jeden wiersz niżej i trzy kolumny w prawo w stosunku do bieżącej komórki A1

Range(„A1”).Offset(1,3).Select

Wybierz komórkę znajdującą się o dwa wiersze wyżej i jedna kolumnę w lewo w stosunku do bieżącej komórki D15

Range(„D15”).Offset(-2,-1).Select

Wybierz komórkę znajdującą się powyżej bieżącej komórki

Selection.Offset(-1,0).Select

Lub

ActiveCell.Offset(-1,0).Select

Page 20: Obiekty w VBA

Elementy programowania 20

Inne metody wybierania komórek

Czynność w VBA Kod

Wybierz ostatnią komórkę w danym rzędzie ActvieCell.End(xlRight).Select

Wybierz ostatnią komórkę w danej kolumnie

ActvieCell.End(xlDown).Select

Wybierz pierwszą komórkę w danym rzędzie

ActvieCell.End(xlLeft).Select

Wybierz pierwszą komórkę w danej kolumnie

ActvieCell.End(xlUp).Select

Page 21: Obiekty w VBA

Elementy programowania 21

Zaznaczanie wierszy i kolumn

Czynność w VBA Kod

Wybierz cały rząd w którym znajduje się aktywna komórka

Selection.EntireRow.Select

Wybierz całą kolumnę w której znajduje się aktywna komórka

Selection.EntireColumn.Select

Page 22: Obiekty w VBA

Elementy programowania 22

Uzyskiwanie informacji o arkuszu

Czynność w VBAOdpowiednik w oknie

Instrukcje Bezpośrednie

Oblicz liczbę wszystkich komórek w arkuszu ?Cells.Count

Oblicz liczbę wszystkich kolumn w arkuszu ?Columns.Count

Oblicz liczbę wszystkich wierszy w arkuszu ?Rows.Count

Page 23: Obiekty w VBA

Elementy programowania 23

Wpisywanie danych w arkuszuDane wpisywane w arkuszu można ująć w trzy podstawowe kategorie:

liczby, teksty, wzory,

ActiveSheet.Range(„D3”).Formula = 123Range(„A1”).Formula = „Stan Konta”Range(„A2:B4”).Formula = 12*3Range(„A3”).Formula = „=B5*12”

Page 24: Obiekty w VBA

Elementy programowania 24

Przesuwanie, kopiowanie, wymazywanie komórek

metody: Cut, Copy, Clear

Czynność w VBA Kod

Przesuń zawartość komórki A5 do A4 Range(„A5”).Cut Range(„A4”)

Skopiuj formułę z komórki A5 do komórek D1:D12

Range(„A5”).Copy Range(„D1:D12”)

Wymaż zawartość komórki A4 Range(„A4”).Clear

metoda Clear: ClearContents, ClearFormats, ClearNotes

Page 25: Obiekty w VBA

Manipulowanie skoroszytami Czynność w VBA Kod

Otwórz nowy skoroszyt Workbooks.Add

Uaktywnij skoroszyt np. drugi Workbooks(2).Activate

Uaktywnij skoroszyt o nazwie Raport.xls Workbooks(„Raport.xls”).Activate

Zapisz bieżący dokument na dysku pod nazwą „Koszty.xls”

ActiveWorkbook.SaveAs Filename

:=„Koszt.xls”

Zamknij pierwszy skoroszyt Workbooks(1).Close

Zamknij bieżący skoroszyt bez zapisywania zmian

ActiveWorkbook.Close saveChanges:=False

Zamknij wszystkie skoroszyty Workbooks.Close

Page 26: Obiekty w VBA

Manipulowanie arkuszamiCzynność w VBA Kod

Dodaj nowy arkusz Worksheets.Add

Wybierz arkusz o nazwie Saldo

Worksheets(„Saldo”).Select

Umieść Arkusz2 przed Arkuszem1

Worksheets(„Arkusz2”).MoveBefore:=Worksheets(„Arkusz1”)

Skopiuj Arkusz1 i umieść jego kopię za Arkuszem4

Worksheets(„Arkusz1”).Copy After:=Worksheets(„Arkusz4”)

Zmień nazwę arkusza 2 na Wydatki

Worksheets(2).Name=„Wydatki”

Wymaż Arkusz2 Worksheets(„Arkusz2”).Delete

Wybierz arkusze 1, 3, 4 Worksheets(Array(1,3,4)).Select

Page 27: Obiekty w VBA

Elementy programowania 27

Operowanie oknami – metoda ARRANGE

StałaWartoś

ćZnaczenie

xlArrangeStyleTiled 1 Wszystkie okna ustawione są sąsiadująco

xlArrangeStyleCascade 7 Okna ustawione są jedno pod drugim

xlArrangeStyleHorizontal 2Okna ustawione są jedno pod drugim w ujęciu poziomym

xlArrangeStyleVertical 3Okna ustawione są jedno koło drugiego w ujęciu pionowym

Page 28: Obiekty w VBA

Elementy programowania 28

Przykład kodu

Windows.Arrange ArrangeStyle:=xlArrangeStyleCascade

lub

Windows.Arrange ArrangeStyle:=7

Page 29: Obiekty w VBA

Elementy programowania 29

Zarządzanie aplikacją Excela

Czynność w VBA Kod

Zmień nazwę aplikacji Excela na inną Application.Caption = „Moja aplikacja”

Zakończ pracę z programem Application.Quit

Sprawdź nazwę systemu operacyjnego ?Application.OperatingSystem

Sprawdź w jakim folderze zainstalowano aplikację

?Application.Path

Page 30: Obiekty w VBA

Elementy programowania 30

Pomocne polecenia: Jak wybrać….? ...pojedynczą komórkę (na przykładzie A1)

                (5 różnych sposobów)           

Range("A1").Select             Cells(1).Select             Cells.Item(1).Select             Cels(1,1).Select             Cells(1,"A").Select

Page 31: Obiekty w VBA

Elementy programowania 31

Jak wybrać….? ...zakres komórek (2 sposoby)

      Range("A1:A5").Select      Range(Cells(1,1),Cells(5,1)).Select

...kilka komórek (różnych)      Range("A1","A5","Z320").Select

...kilka zakresów komórek (różnych)      Range("A1:A5","A15:D15","Z320").Select

Page 32: Obiekty w VBA

Elementy programowania 32

Jak wybrać….? ...komórkę aktywną           Application.ActiveCell ...komórkę przesuniętą o 2 wiersze i 1 kolumnę od

komórki aktywnej           Activecell.Offset(2,1).Activate ...komórkę przesuniętą o 2 wiersze i 1 kolumnę od

komórki A2 (2 różne sposoby)          Range("A2").Offset(2, 1).Activate

     Cells(2, 1).Offset(2, 1).Activate

Page 33: Obiekty w VBA

Elementy programowania 33

Jak wybrać….? ...pierwszy arkusz w aktywnym skoroszycie

            Sheets(1).Activate ...arkusz o nazwie "Arkusz1"

            Sheets("Arkusz1").Activate ...spośród otwartych zeszytów skoroszyt o

nazwie "Zeszyt1"            Windows("Zeszyt1").Activate

Page 34: Obiekty w VBA

Elementy programowania 34

Jak wybrać….? ...wiersz z aktywną komórką (2 różne sposoby):

            Selection.EntireRow.Select            ActiveCell.EntireRow.Select

...kolumnę z aktywną komórką (2 różne sposoby):            Selection.EntireColumn.Select            ActiveCell.EntireColumn.Select

...kilka kolumn w ciągłym obszarze            Columns("A:C").Select

...kilka wierszy w ciągłym obszarze            Rows("1:5").Select

Page 35: Obiekty w VBA

35

Jak wybrać….? ...kilka kolumn w nieciągłym obszarze

            Columns("A:C","E:E").Select ...kilka wierszy w nieciągłym obszarze

            Rows("1:5","6:6").Select ...ostatnią komórkę w danym wierszu

            ActiveCell.End(xlRight).Select ...ostatnią komórkę w danej kolumnie

            ActiveCell.End(xlDown).Select ...pierwszą komórkę w danym wierszu

            ActiveCell.End(xlLeft).Select ...pierwszą komórkę w danej kolumnie

            ActiveCell.End(xlUp).Select

Page 36: Obiekty w VBA

Elementy programowania 36

Jak wyświetlić? ...zawartość komórki  (na przykładzie A1)

            Range("A1").Value             Cells(1).Value             Cells.Item(1).Value             Cels(1,1).Value             Cells(1,"A").Value

...formułę z  komórki  (na przykładzie A1)            Range("A1").Formula             Cells(1).Formula             Cells.Item(1).Formula             Cels(1,1).Formula             Cells(1,"A").Formula

Page 37: Obiekty w VBA

Elementy programowania 37

Jak wyświetlić? ...własny tekst w tytule zamiast Microsoft Excel

Application.Caption="to tu wstawiamy..."

...własny tekst w linii statusu

Application.StatusBar="to tu wstawiamy..."

Page 38: Obiekty w VBA

Elementy programowania 38

Jak wstawić? ...własny tekst w komórce (na przykładzie A1)

            Range("A1").Formula = "mój tekst"            Cells(1).Formula ="mój tekst"            Cells.Item(1).Formula ="mój tekst"            Cels(1,1).Formula ="mój tekst"            Cells(1,"A").Formula ="mój tekst"

            Range("A1").Value = "mój tekst"            Cells(1).Value ="mój tekst"            Cells.Item(1).Value ="mój tekst"            Cels(1,1).Value ="mój tekst"            Cells(1,"A").Value ="mój tekst"

Page 39: Obiekty w VBA

Elementy programowania 39

Jak wstawić?    ...liczbę (na przykładzie A1)

            Range("A1").Formula = 13            Cells(1).Formula =13            Cells.Item(1).Formula =13            Cels(1,1).Formula =13            Cells(1,"A").Formula =13

            Range("A1").Value = 13            Cells(1).Value =13            Cells.Item(1).Value =13            Cels(1,1).Value =13            Cells(1,"A").Value =13

Page 40: Obiekty w VBA

Elementy programowania 40

Jak wstawić? ...formułę =B1+C4 do komórki A1

            Range("A1").Formula = "=B1+C4"            Cells(1).Formula = "=B1+C4"            Cells.Item(1).Formula = "=B1+C4"            Cels(1,1).Formula = "=B1+C4"            Cells(1,"A").Formula = "=B1+C4"

...format komórki w postaci np. ##.##0Range("A1").NumberFormat = "##.##0"

  

Page 41: Obiekty w VBA

Elementy programowania 41

Typy błędów programuW programie utworzonym w Visual Basic mogą

zdarzyć się trzy typy błędów: błędy kompilacji (składni), błędy podczas działania programu, błędy logiczne.

Page 42: Obiekty w VBA

42

Błędy kompilacji (składni)Błędy kompilacji to pomyłka programisty, która łamie zasady

składni (błędne napisanie własności lub słowa kluczowego). Visual Basic zwraca uwagę na kilka typów składni w programach; nie pozwoli na uruchomienie programu, dopóki nie zostaną poprawione wszystkie błędy składni.

Jeżeli opcja Auto Syntax Check (na stronie Editor okienka dialogowego Options) jest zaznaczona, błędy składniowe są wykrywane podczas wpisywania. W przeciwnym wypadku są wykrywane, podczas kompilacji projektu.

Przykłady instrukcji, które mogą spowodować błędy kompilacji:Prnt "Hello!"  - niepoprawne słowo kluczowe (Prnt zamiast Print).Print ?Hello!" - niepoprawna interpunkcja (? zamiast ").If X=1 doSomething  - niepoprawna struktura (przed doSomething powinno wystąpić Then).

Page 43: Obiekty w VBA

Elementy programowania 43

Błąd podczas działania programuBłąd podczas działania programu to błąd, który powoduje nieoczekiwane zatrzymanie działania programu. Takie błędy powstają, gdy zewnętrzne zdarzenie lub nie wykryty błąd składni zmusza program do zatrzymania swojego działania. Pomyłka w pisowni nazwy lub np. stacja dyskietek nie zawierająca dyskietki są przyczynami, które mogą powodować błędy podczas działania programu. Kiedy pojawi się błąd podczas wykonania programu, zatrzymane jest wykonywanie programu, chyba że procedura, w której pojawił się błąd, będzie zawierała poprawny kod obsługi błędu.

Page 44: Obiekty w VBA

Elementy programowania 44

Błąd logicznyBłąd logiczny to błąd człowieka - pomyłka programisty, która powoduje, że kod programu generuje złe wyniki. Większość wysiłków przy usuwaniu błędów koncentruje się na znajdywaniu błędów logicznych wprowadzonych przez programistę. Błędy te są często trudniejsze do zlokalizowania i poprawienia.

Page 45: Obiekty w VBA

Elementy programowania 45

Sposoby wykrywania błędówVisual Basic zapewnia szeroki asortyment narzędzi do

wykrywania błędów i cech, które pomagają zlokalizować i poprawić błędy w kodzie:

sprawdzanie błędów składni, tryb przerwania/edycji i kontynuacji, wyrażenia Watch, punkty przerwania, wykonywanie krokowe, wywołania.

Page 46: Obiekty w VBA

Elementy programowania 46

Sprawdzanie błędów składni Sprawdzanie błędów składni kontroluje kod pod względem błędów składniowych podczas wpisywania, uruchamiania i kompilowania projektu. Jeżeli pojawi się błąd, zostanie podświetlone potencjalne źródło błędu i wyświetlony komunikat opisujący błąd.

Aby włączyć sprawdzanie błędów składniowych należy: wybrać menu Tools Options i na zakładce Edit zaznaczyć opcję Auto Syntax Check.

Page 47: Obiekty w VBA

47

Tryb przerwania/edycji i kontynuacjiTryb przerwania zatrzymuje uruchomioną aplikację, ale pozostawia jej

bieżące zmienne i ustawienia właściwości. Jest jakby zaprezentowaniem stanu programu w określonej chwili podczas jego działania. W trybie przerwania można zbadać i zmienić bieżące wartości i właściwości, wprowadzić znaczne modyfikacje kodu i określić, jakie instrukcje aplikacji będą uruchomione jako następne. Po zakończeniu edycji, można kontynuować uruchomienie programu. Ta bardzo przydatna cecha jest nazywana edytuj i kontynuuj. Aby wejść w tryb przerwania należy:

Po uruchomieniu programu wybrać z menu Run, Break (nacisnąć Ctrl+Break lub kliknąć przycisk Break na pasku narzędziowym).

Aby zbadać i zmienić zmienną i wartość właściwości, należy wprowadzić odpowiednie polecenie w oknie Immediate lub sprawdzić wartość w oknie Locals.

Aby zbadać i zmienić kod, należy wyświetlić odpowiednie okno Code i zmienić go w miarę potrzeby.

Aby kontynuować działanie programu, należy nacisnąć F5 lub wybrać z menu Run, Start lub kliknąć przycisk Start na pasku narzędziowym.

Page 48: Obiekty w VBA

Wyrażenia Watch Wyrażenia Watch umożliwiają monitorowanie wartości określonych

zmiennych, właściwości i wyrażeń w czasie działania programu. Wyrażenia Watch są wyświetlone w obszarze Watch okna Debug w trybie przerwania (poza wyrażeniami Watch, które pojawiają się w ich własnym okienku dialogowym). Można przerwać wykonanie programu, kiedy wyrażenie Watch ulega zmianie lub ma wartość True. Aby dodać wyrażenie Watch do programu należy:

W czasie projektowania lub podczas trybu przerwania wybrać z menu Debug, Add Watch, aby otworzyć okienko dialogowe Add Watch.

W okienku tekstowym Expression należy wpisać zmienną, właściwość lub wyrażenie, które ma być obserwowane.

W Context należy wybrać moduł(y) i procedurę(y), w których ma być obserwowana zmienna, właściwość lub wyrażenie. Zawężenie zakresu obserwacji umożliwia przyśpieszenie działania wykrywacza błędów.

W Watch Type należy wybrać Watch Expression (aby tylko obserwować), Break When Value Is True (aby przerwać działanie programu, kiedy wartość wyrażenia Watch ma wartość True) lub Break When Value Changes (aby zatrzymać, kiedy wartość wyrażenia ulega zmianie).

Page 49: Obiekty w VBA

Elementy programowania 49

Aby przeprowadzić stałą obserwację - to znaczy, aby oglądać bieżącą wartość zmiennej, właściwości lub wyrażenia należy:

Po wejściu w tryb przerwania, wybrać właściwą zmienną, właściwość lub wyrażenie w odpowiednim oknie Code lub na obszarze Code okna Debug,

Wybrać z menu Debug, Quick Watch lub nacisnąć Shift+F9 albo kliknąć przycisk Quick Watch na pasku narzędziowym.

Page 50: Obiekty w VBA

Elementy programowania 50

Punkt przerwania Punkt przerwania określa konkretny wiersz kodu, gdzie Visual

Basic zatrzyma działanie programu i wejdzie w tryb przerwania. Umożliwia to zbadanie stanu programu (wartości zmiennych, wydruku ekranu i tak dalej) w specyficznym miejscu działania programu. Aby ustawić lub usunąć punkt przerwania dla wiersza kodu należy:

W czasie projektowania lub podczas trybu przerwania umieścić wskaźnik (kursor) w wierszu i wybrać z menu Debug, Toggle Breakpoint lub nacisnąć F9, albo kliknąć przycisk Toggle Breakpoint na pasku narzędziowym.

Page 51: Obiekty w VBA

Wykonywanie krokowe Wykonywanie krokowe umożliwia „przechodzenie przez” wykonywanie pojedynczej jednostki kodu - jednej instrukcji, jednej procedury, jednego modułu itd. Po wykonaniu określonej jednostki kodu VB automatycznie wchodzi w tryb przerwania, umożliwiając obserwowanie wyników. Może to ułatwić znalezienie części kodu, w której pojawił się błąd.Step IntoPolecenie Step Into przechodzi do następnej instrukcji w programie. Jeżeli ta instrukcja jest wywołana z innej procedury, Step Into przechodzi do pierwszej instrukcji z tej procedury. Należy używać Step Into w celu znajdowania błędów programu na „mikroskopijnym” poziomie przez przechodzenie przez wszystkie jego instrukcje jedna po drugiej.Aby użyć polecenia Step Into należy w trybie przerwania wybrać z menu Debug, Step Into lub wcisnąć F8, lub kliknąć przycisk Step Into na pasku narzędziowym.

Page 52: Obiekty w VBA

Elementy programowania 52

Wykonywanie krokoweStep OverPolecenie Step Over przechodzi do następnej instrukcji w procedurze. Jeżeli ta instrukcja jest wywołaniem następnej procedury, Step Over przechodzi „nad” tą procedurą i zatrzymuje się na następnej instrukcji bieżącej procedury. Można go używać do znajdowania błędów w programie na nieco wyższym poziomie niż Step Into, przez przechodzenie przez kolejne procedury jako całość.Aby użyć polecenia Step Over należy w trybie przerwania wybrać z menu Debug, Step Over lub nacisnąć Shift+F8, lub kliknąć przycisk Step Over na pasku narzędziowym.

Page 53: Obiekty w VBA

Elementy programowania 53

Wykonywanie krokoweRun To CursorPolecenie Run To Cursor przechodzi do określonej instrukcji w dalszej części kodu. Należy go używać do szybkiego przechodzenia do właściwych instrukcji w programie.Aby użyć polecenia Run To Cursor należy w trybie przerwania wyświetlić instrukcję kodu, do której program ma przejść i kliknąć ją, aby tam umieścić kursor. Następnie wybrać z menu Debug, Run To Cursor lub nacisnąć Ctrl+F8.

Page 54: Obiekty w VBA

Elementy programowania 54

WywołaniaWywołania umożliwiają oglądanie - w trybie przerwania - spisu aktualnie aktywnych wywołań procedur programów. Kiedy wykonywany jest kod procedury, procedura jest dodawana do listy aktywnych procedur. Jeżeli procedura wywołuje inną procedurę Sub lub Function, wywołana procedura jest również dodawana do listy itd. dla wszystkich aktywnych procedur. Ta cecha może pomóc śledzić przebieg programu i wybrać możliwe lokalizacje błędów logicznych. Aby obejrzeć aktualnie aktywne odwołania do procedur należy w oknie Call Stack: w trybie przerwania wybrać z menu View, Call Stack lub nacisnąć Crl+L.

Page 55: Obiekty w VBA

Elementy programowania 55

Obsługa błędów Błędy pojawiają się kiedy programy są uruchamiane. Nawet jeżeli kod jest bez zarzutu, użytkownik może popełniać błędy. Może np. chcieć korzystać ze stacji dyskietek, w której nie ma dyskietki lub otwierać plik, który nie istnieje itd. Obowiązkiem programisty jest zapewnienie sposobu informowania o błędach, komunikowania się i (jeżeli to możliwe) poprawiania tych błędów. Można to zrobić przez dołączenie odpowiedniego kodu obsługi błędów w aplikacjach.

Page 56: Obiekty w VBA

Elementy programowania 56

Kod obsługi błędówBłędami pojawiającymi się w czasie działania programu można manipulować przez dołączenie instrukcji On Error w kodzie programu. Kiedy pojawi się błąd w czasie pracy i „winny temu” blok kodu nie zawiera instrukcji On Error, wykonywanie programu zostaje zatrzymane. Kiedy pojawi się błąd, a kod zawiera instrukcję On Error, działanie programu nie jest zatrzymywane; zamiast tego sterowanie programem jest przekazywane do bloku kodu obsługi błędu. Kiedy błąd zostanie usunięty, działanie programu będzie wznowione.

Page 57: Obiekty w VBA

Elementy programowania 57

Kod obsługi błęduPodstawowa struktura procedury zawierającej kod obsługi błędu:

Sub NazwaProcedury    On Error GoTo MiejsceObslugiBledow    Rozkazy procedur    ..................................Exit Sub

MiejsceObslugiBledow:     Rozkazy obslugi bledow    .........................................Exit SubEnd Sub

Page 58: Obiekty w VBA

Elementy programowania 58

Instrukcja On Error jest pierwszą wykonywalną instrukcją w procedurze, ponieważ On Error włącza obsługę błędu dla wszystkich instrukcji, które następują po niej (w tej samej procedurze). Za instrukcją On Error znajduje się blok składający się z normalnych instrukcji procedury. Ostatnią instrukcją w tym bloku jest instrukcja Exit Sub, która umożliwia opuszczenie procedury przed kodem obsługi błędu, jeżeli błąd nie zostanie wykryty. Za nią znajduje się kod obsługi błędu (poprzedzony przez etykietę identyfikującą wiersz).

Page 59: Obiekty w VBA

KoniecDziękuję za uwagę