Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałZłota Opolski Został zmieniony 10 lat temu
1
Elementy programowania97 Użycie zmiennych w procedurze Sub ObliczWiek() 'deklaracja zmiennych Dim ImieNazwisko As String Dim DataUrodzenia As Date Dim Wiek As Integer ImieNazwisko = "Jan Kowalski" DataUrodzenia = #1/3/1967# 'obliczenie wieku Wiek = Year(Now()) - Year(DataUrodzenia) 'wydrukowanie wyniku w oknie Instrukcji bezpośrednich Debug.Print ImieNazwisko & " ma " & Wiek & " lat." End Sub
2
Elementy programowania98 Użycie zmiennych i stałych w procedurze Sub obliczenia () 'deklaracja zmiennych liczba1, liczba2 i stałej liczba0 Dim liczba1 As Single Dim liczba2 As Single Const liczba0 =5 przypisanie zmiennym wartości liczba1 = 10 liczba2 = 20 obliczenia liczba3 = liczba0 + liczba1 + liczba2 liczba4 = liczba2 – liczba2 * liczba0 liczba5 = liczba1/liczba2^liczba0 End Sub
3
Elementy programowania99 Wymuszenie deklarowania zmiennych Deklarowanie wszystkich zmiennych wymusza na programiście wprowadzona na początku modułu instrukcja Option Explicit. Jej zaletą jest automatyczne wychwycenie błędów w pisowni zmiennych w chwili kompilacji.
4
Elementy programowania100 Zasięg zmiennych związany jest ściśle ze sposobem deklaracji zmiennych, zmienna zadeklarowana w procedurze jest lokalna dla tej procedury (w innych procedurach może istnieć zmienna o takiej samej nazwie ale przechowująca odmienne wartości), aby zmienna była dostępna dla innych procedur należy zadeklarować ją na poziomie modułu na początku, przed jakąkolwiek funkcją lub procedurą.
5
Elementy programowania101 Zasięg zmiennych Każda zmienna w programie Visual Basic ma jeden z następujących zasięgów: Prywatny poziom procedury, Prywatny poziom modułu, Publiczny poziom modułu, Przesłanianie zmiennych.
6
Elementy programowania102 Zmienne na prywatnym poziomie procedury zmienna jest widoczna dla jej procedury macierzystej - procedury, w której została zadeklarowana, na przykład, jeżeli mamy trzy różne procedury, w których została zadeklarowana zmienna Liczba, możemy zmodyfikować Liczba w dowolnej procedurze bez wpływu na Liczba w pozostałych procedurach, aby utworzyć zmienną na prywatnym poziomie procedury należy ją zadeklarować w procedurze ze słowem kluczowym Dim, wszystkie zmienne na poziomie procedury są prywatne.
7
Elementy programowania103 Zmienne prywatnego poziomu modułu widzialne są dla wszystkich procedur w ich macierzystym formularzu lub module, ale nie dla innych formularzy lub modułów, na przykład, jeżeli zadeklarowano Liczba jako zmienną prywatnego poziomu modułu, każdy wiersz kodu w tym formularzu, który odnosi się do Liczba, będzie odnosił się do tej zmiennej, aby utworzyć zmienną prywatnego poziomu modułu, należy użyć słowa kluczowego Private w celu zadeklarowania zmiennej prywatnej w części General Declarations formularza lub ogólnego modułu, zmienne poziomu modułu są przydatne do obliczeń, których wyniki mają być wspólne dla różnych procedur w jednym formularzu lub module.
8
Elementy programowania104 Zmienne publicznego poziomu modułu widziane są dla każdej procedury w każdym formularzu w całym projekcie. Jeżeli zadeklarowano Komunikat jako zmienną publicznego poziomu modułu, każdy wiersz kodu w każdym formularzu i module, który ma dostęp do Komunikat, będzie miał dostęp do tej zmiennej. aby utworzyć zmienną publicznego poziomu modułu, należy użyć instrukcji Public w celu zadeklarowania zmiennej publicznej w części General Declarations typowego modułu (ale nie formularza). zmienne publicznego poziomu modułu są przydatne do obliczeń, których wyniki powinny być wspólne dla całości projektu ze wszystkimi formularzami i/lub modułami.
9
Elementy programowania105 Przesłanianie zmiennych VB umożliwia deklarowanie tej samej nazwy dla zmiennych lub stałych symbolicznych różnych zasięgów, np., można zadeklarować dwie zmienne Liczba w ogólnym module: jedną zmienną publiczną, a drugą zmienną prywatną. Która z tych dwóch zmiennych będzie używana w Visual Basic zależy od tego, która część kodu została uruchomiona, kiedy została zastosowana zmienna (jeżeli procedura, w której zadeklarowaliśmy prywatną zmienną Liczba, została uruchomiona, Visual Basic będzie używał zmiennej prywatnej Liczba, jeżeli ta procedura nie została uruchomiona, Visual Basic zastosuje zmienną publiczną Liczba), zmienne publiczne zostają przesłonięte przez zmienne prywatne o tej samej nazwie. Wartość zmiennej publicznej nie ulegnie zmianie, a każde odwołanie do zmiennej będzie się odnosiło do zmiennej prywatnej. Visual Basic zawsze używa zmiennej, która jest bliższa uruchomionemu kodowi.
10
Elementy programowania106 Zasięg zmiennych - podsumowanie Słowo kluczowe Miejsce deklaracji Zasięg zmiennej lub stałej DimProceduraDostępna tylko w procedurze DimModuł Dostępna dla wszystkich procedur modułu PrivateModuł Dostępna dla wszystkich procedur modułu PublicModuł Dostępna dla wszystkich procedur we wszystkich modułach bieżącego skoroszytu
11
Elementy programowania107 Zmienne statyczne Deklaracja: Static NazwaZmiennej As TypZmiennej zmienna tak deklarowana nie traci swojej wartości po zakończeniu wykonywania instrukcji, po powrocie do danej procedury zmienna statyczna nadal ma wartość, jaką miała w chwili zakończenia procedury, zmienne poziomu procedury mogą być statyczne lub nie, w zależności od sposobu ich zadeklarowania, zmienne poziomu modułu są zawsze statyczne. Visual Basic automatycznie zatrzymuje je w pamięci na czas działania programu. Jeżeli spróbujemy użyć słowa kluczowego Static w celu zadeklarowania zmiennej poziomu modułu, pojawi się komunikat o błędzie. Zamiast tego należy użyć Dim, Private lub Public, Przykład
12
Elementy programowania108 Zmienne obiektowe nie przechowują danych, muszą być typu obiektu z którym są skojarzone. Użycie Dim, Private, Public, Static tylko deklaruje zmienną, która odnosi się do obiektu. Żaden obiekt nie jest skojarzony z nią dopóki nie zostanie użyta instrukcja Set do skojarzenia z określonym obiektem, informują tylko gdzie dane się znajdują, np. za pomocą zmiennej obiektowej można przekazać, że dane znajdują się w komórkach A1:E10 w aktywnym arkuszu: Dim zakres As Object Set zakres=Worksheets(Arkusz1).Range(Cells(1,1),Cells(10,5)).Select zakres.ColorIndex=6 zakres.Pattern=xlSolid Kojarzy odwołanie do obiektu ze zmienną lub właściwością
13
Elementy programowania109 Zmienne obiektowe można również definiować zmienne jako określony typ obiektu, np. Dim zakres As Range Dim arkusz As Worksheet Set arkusz=Worksheets(Market) jeśli zmienna obiektowa nie jest już potrzebna można zerwać połączenie zmiennej z obiektem: Set zmienna=Nothing
14
Elementy programowania110 Przykład zmiennej obiektowej Sub UzycieZmObiektowej() Dim zakres As Object Set zakres = Worksheets("Arkusz1").Range(Cells(1, 1), Cells(10, 5)) zakres.BorderAround Weight = xlMedium With zakres.Interior.ColorIndex = 6.Pattern = xlSolid End With Set zakres = Worksheets("Arkusz1").Range(Cells(12, 5), Cells(12, 10)) zakres.Value = 54 Debug.Print IsObject(zakres) End Sub
15
Elementy programowania111 Instrukcje wyboru If... Then If...Else If...ElseIf Select Case Select Case...Case Is Select Case...Case To
16
Elementy programowania112 If... Then – składnia instrukcji postać blokowa: If warunek Then blok instrukcji End If postać liniowa: If warunek Then instrukcja1 [:instrukcja2 [:… [:instrukcja N]…]]
17
Elementy programowania113 If... Then najprostsza instrukcja wyboru, po napotkaniu przedstawionej komendy program sprawdza warunek znajdujący się po słowie If, jeżeli warunek jest prawdziwy (ma wartość logiczną True) program wykonuje polecenia znajdujące się po słowie Then, a następnie przechodzi do kolejnej linii programu, jeżeli warunek jest nieprawdziwy - fałszywy (ma wartość logiczną False) program od razu przechodzi do następnej linii. Instrukcje znajdujące się po słowie Then nie zostaną wykonane,
18
Elementy programowania114 Przykład użycia instrukcji If... Then w postaci blokowej: If Zysk > 1200 Then Podatek = 20 Komunikat = MsgBox(Zapłacisz większy podatek) End If w postaci liniowej: If Zysk > 1200 Then Podatek = 20 : Komunikat = MsgBox(…)
19
Elementy programowania115 Decyzje oparte na więcej niż jednym warunku If warunek1 And warunek2 Then blok instrukcji End If If warunek1 Or warunek2 Then blok instrukcji End If
20
Elementy programowania116 Przykład If… Then z dwoma warunkami If cena = 120 And sztuki >= 50 Then rabat = (cena * sztuki) * 0.1 MsgBox(Rabat wynosi: & rabat ) End If If cena = 120 Or sztuki < 50 Then MsgBox(Rabat wynosi: & 50 - sztuki & sztuk(i)) End If
21
Elementy programowania117 Struktura If...Then...Else postać liniowa: If warunek Then instrukcja1a [:… [:instrukcja N]…]Else instr.2a [:… [:instr.N]…] postać blokowa: If warunek Then blok instrukcji Else blok instrukcji End If
22
Elementy programowania118 Struktura If...Then...Else po napotkaniu przedstawionej komendy program sprawdza warunek znajdujący się po słowie If, jeżeli warunek jest prawdziwy (ma wartość logiczną True) program wykonuje polecenia znajdujące się pomiędzy słowami Then i Else, a po ich wykonaniu wykonuje polecenie znajdujące się bezpośrednio po słowie kluczowym End If, jeżeli warunek jest nieprawdziwy - fałszywy (ma wartość logiczną False) program od razu przechodzi do instrukcji znajdujących się po słowie Else, a po ich wykonaniu wykonuje polecenie znajdujące się bezpośrednio po słowie kluczowym End If,
23
Elementy programowania119 Przykład struktury If...Then...Else If Zysk > 1200 Then Podatek = 20 Wiadomosc = MsgBox(Musisz zapłacić większy podatek) Else Podatek = 7 Wiadomosc = MsgBox(Możesz zapłacić mniejszy podatek) End If
24
Elementy programowania120 Struktura If...Then...ElseIf If warunek1 Then blok instrukcji ElseIf warunek2 Then blok instrukcji [ElseIf warunekx Then blok instrukcji] [Else blok instrukcji] End If Nie ma ograniczenia co do ilości zagłębień, ale powyżej 2 warunków zaleca się stosowanie struktury Select Case
25
121 Struktura If...Then...ElseIf jeżeli warunek (warunek1) jest prawdziwy (ma wartość logiczną True) program wykonuje polecenie znajdujące się pomiędzy słowami Then i ElseIf, a po ich zakończeniu realizuje dalszy ciąg programu (po słowie EndIf), jeżeli warunek jest nieprawdziwy (ma wartość logiczną False) program od razu przechodzi do sprawdzenia warunku2 po ElseIf, jeżeli ten warunek (warunek2) jest prawdziwy (ma wartość logiczną True) program wykonuje polecenie znajdujące się pomiędzy słowami Then i Else, a po ich zakończeniu realizuje dalszy ciąg programu (po słowie EndIf), jeżeli warunek po ElseIf jest nieprawdziwy - fałszywy (ma wartość logiczną False) program od razu przechodzi do: instrukcji po słowie Else jeżeli to słowo istnieje, instrukcji po słowach End If,
26
Elementy programowania122 Przykład If...Then...ElseIf If Zysk > 1200 Then Podatek = 20 Wiadomosc = MsgBox(Musisz zapłacić olbrzymi podatek) ElseIf Zysk > 700 Then Podatek = 16 Wiadomosc = MsgBox(Musisz zapłacić 16% podatku) ElseIf Zysk > 400 Then Podatek = 7 Wiadomosc = MsgBox(Musisz zapłacić 7% podatku) ElseIf Zysk > 200 Then Podatek = 4 Wiadomosc = MsgBox(Masz mało ale i tak płać!) Else Podatek = 0 Wiadomosc = MsgBox(Z czego Ty żyjesz?) End If
27
Elementy programowania123 Instrukcja Select Case Select Case wyrażenie Case wartość1 blok instrukcji, gdy wyrażenie = wartość1 Case wartość2 blok instrukcji, gdy wyrażenie = wartość2 [Case wartość3 blok instrukcji, gdy wyrażenie = wartość3]... [Case Else instrukcje gdy poprzednie wartości nie pasowały] End Select
28
Elementy programowania124 Instrukcja Select Case struktura Select Case umożliwia wykonanie jednego z kilku bloków instrukcji w zależności od wartości podanego wyrażenia, wartości przeglądane są po kolei, i pierwsza spełniająca regułę powoduje przejście do wykonania odpowiednich instrukcji i opuszczenie struktury Select Case, z operatorami: >, =,, stosowane jest słowo Is, do określenia zakresu używane jest słowo To,
29
Przykład Select Case Select Case Zysk Case 1000 To 1200 Podatek = 20 Wiadomosc = MsgBox(Musisz zapłacić olbrzymi podatek) Case 700 Podatek = 16 Wiadomosc = MsgBox(Musisz zapłacić 16% podatku) Case Is < 400 Podatek = 7 Wiadomosc = MsgBox(Musisz zapłacić 7% podatku) Case (100+100) Podatek = 4 Wiadomosc = MsgBox(Masz mało ale i tak płać!) Case Else Podatek = 0 Wiadomosc=MsgBox(Twój zysk jest inny niż 1200, 1000, 700 i 200.) End Select Uwaga! Ponieważ wartości w instrukcji przeglądane są po kolei, i pierwsza spełniająca regułę powoduje przejście do wykonania odpowiednich instrukcji, gdy zostaną podane wartości < 400 zawsze będzie komunikat Musisz zapłacić 7% podatku – nigdy nie będzie wykonana instrukcja dla 200 i pozostałych przypadków
30
Elementy programowania126 Zasady stosowania instrukcji wyboru jeżeli chcesz podać tylko jeden warunek wybierz prostą instrukcję If...Then, jeżeli potrzebujesz dwóch lub więcej warunków wybierz If...Then..Else lub If...Then...ElseIf..Then...Else lub Select Case; pamiętaj, że Select Case ma przejrzystą strukturę, łatwo dodać następne warunki, jeżeli zamierzasz łączyć wiele warunków to zastosuj Select Case,
31
Elementy programowania127 Instrukcja GoTo Instrukcja Goto nakazuje programowi wykonanie skoku do określonej linii kodu wewnątrz procedury. Składnia komendy jest następująca: Goto etykieta Argument etykieta jest nazwą etykiety, do której ma nastąpić skok. Po napotkaniu komendy Goto program wykonuje skok do linii, w której znajduje się etykieta. W dalszej kolejności wykonywane jest polecenie znajdujące się bezpośrednio za etykietą lub gdy takiego nie ma to od następnej linii po linii z etykietą. Skok może nastąpić w przód (do linii znajdującej się za komendą Goto) lub w tył (do linii znajdującej się przed komendą Goto).
32
128 Etykieta - etykieta linii to nazwa linii, którą można przypisać do każdej linii, - etykieta linii jest dowolnym tekstem z zachowaniem zasad obowiązujących przy nazywaniu zmiennych, - musi znajdować się na samym początku linii, tzn.: pierwszy znak nazwy (etykiety) musi być pierwszym znakiem w linii, - po etykiecie musi występować znak dwukropka ( : ), - w obrębie procedury nie mogą znajdować się dwie takie same etykiety, - po etykiecie może wystąpić polecenie języka VBA (po dwukropku), - odmianą etykiety jest numer linii, - należy pamiętać o zasadach numerowania linii: - numer linii musi znajdować się na samym początku linii, - po numerze musi znajdować się znak dwukropka ( : ).
33
Elementy programowania129 Rodzaje instrukcji pętli For… Next powtarzanie określoną ilość razy Do Until Do...Loop Until powtarzanie dopóki fałsz pętle z warunkiem Do While Do...Loop While powtarzanie dopóki prawda Exit Do Exit For opuszczenie pętli
34
Elementy programowania130 Pętla For… Next For licznik = początek To koniec [Step krok] [blok instrukcji] [Exit For] [blok instrukcji] Next [licznik] Pozwala na wielokrotne powtarzanie bloku instrukcji Powtarzanie wykonywane jest ściśle określoną ilość razy (powtórzenia zwane są iteracjami pętli)
35
131 Opis elementów pętli For… Next licznikelement obowiązkowy, zmienna numeryczna, która pełni rolę licznika pętli (nie może mieć typu Boolean ani być elementem tablicy) początekelement obowiązkowy; wartość początkowa licznika koniecelement obowiązkowy; wartość końcowa licznika krokelement nieobowiązkowy; wielkość, o jaką zwiększany lub zmniejszany jest licznik przy każdym wykonaniu pętli (wartość domyślna wynosi 1), Exit Forelement nieobowiązkowy; napotkanie tej instrukcji powoduje natychmiastowe opuszczenie pętli (zostanie wykonana instrukcja po słowie Next)
36
132 Przykłady pętli For… Next Suma = 0 For Licznik = 2 To 100 Step 2 Suma = Suma + Licznik Next Licznik For i = 1 To 10 MsgBox Aktualna wartość wynosi + str(i) Next i Str(i) – zwraca wartość typu String reprezentującą wartość numeryczną
37
Elementy programowania133 Pętla Do While… Loop Do While warunek blok instrukcji [Exit Do] blok instrukcji Loop instrukcje
38
Elementy programowania134 Do While… Loop pętla ta wymaga zastosowania wyrażenia porównania (wykorzystuje do tego celu operatory porównania), w pętli może znajdować się jedna instrukcja lub cały blok instrukcji VB. Blok ten jest wykonywany tak długo jak długo podany warunek jest prawdziwy. Ważne jest więc, aby w ciele pętli umieścić instrukcje, które doprowadzą do tego, że podany warunek kiedyś stanie się fałszywy. W przeciwnym razie pętla się nie zakończy, jeżeli warunek jest fałszywy już na samym początku przed wykonaniem pętli, to blok instrukcji w ciele pętli nie zostanie wykonany ani razu, jeżeli program napotka wewnątrz pętli komendę Exit Do to następuje natychmiastowe przerwanie wykonywania pętli,
39
Elementy programowania135 Przykład pętli Do While… Loop Liczba = 0 Do While (Liczba < 100) Liczba = InputBox("Wpisz liczbę > 100") Loop Pętla będzie wykonywana tak długo, jak będzie podawana liczba < 100
40
Elementy programowania136 Pętla Do Until… Loop Do Until warunek blok instrukcji [Exit Do] blok instrukcji Loop instrukcje
41
Elementy programowania137 Do Until… Loop jest to pętla podobną do Do While… Loop (jedyna różnica polega na tym, że pętla Do Until… Loop wykonuje zawarty w niej blok rozkazów tak długo, jak długo podany warunek jest fałszywy), pętla wymaga zastosowania wyrażenia porównania, w ciele pętli może znajdować się jedna instrukcja lub cały blok instrukcji (blok ten jest wykonywany tak długo jak długo podany warunek jest fałszywy). Ważne jest więc, aby w ciele pętli umieścić instrukcje, które doprowadzą do tego, że podany warunek kiedyś stanie się prawdziwy. W przeciwnym razie pętla się nie zakończy, jeżeli warunek jest prawdziwy już na samym początku przed wykonaniem pętli, to blok instrukcji w pętli nie zostanie wykonany ani razu, jeżeli program napotka wewnątrz pętli komendę Exit Do to następuje natychmiastowe przerwanie wykonywania pętli,
42
Elementy programowania138 Przykład pętli Do Until… Loop Liczba = 0 Do Until Liczba > 100 Liczba = InputBox(Wpisz liczbę > 100) Loop Pętla będzie wykonywana tak długo, jak będzie podawana liczba <= 100
43
Elementy programowania139 Pętla Do Loop… While Do blok instrukcji [Exit Do] blok instrukcji Loop While warunek instrukcje
44
Elementy programowania140 Do Loop… While pętla wymaga zastosowania wyrażenia porównania, w pętli może znajdować się jedna instrukcja lub cały blok instrukcji. Blok ten jest wykonywany tak długo jak długo podany warunek jest prawdziwy. Ważne jest więc, aby w ciele pętli umieścić instrukcje, które doprowadzą do tego, że podany warunek kiedyś stanie się fałszywy. W przeciwnym razie pętla się nie zakończy. pętla ta wykona blok instrukcji zawarty w jej ciele nawet jeżeli warunek jest fałszywy już na samym początku, ponieważ jego prawdziwość jest sprawdzana na końcu pętli, charakterystyczne dla pętli jest to, że wykona się ona na pewno przynajmniej raz, jeżeli program napotka wewnątrz pętli komendę Exit Do to następuje natychmiastowe przerwanie wykonywania pętli,
45
Elementy programowania141 Przykład Do Loop… While Do Liczba = InputBox("Wpisz liczbę > =100") Loop While (Liczba < 100) Pętla będzie wykonywana tak długo, jak będzie podawana liczba < 100
46
Elementy programowania142 Pętla Do Loop… Until Do blok instrukcji [Exit Do] blok instrukcji Loop Until warunek instrukcje
47
Elementy programowania143 Do Loop… Until pętla wymaga zastosowania wyrażenia porównania, w pętli może znajdować się jedna instrukcja lub cały blok instrukcji VB. Blok ten jest wykonywany tak długo jak długo podany warunek jest fałszywy. Ważne jest więc, aby w pętli umieścić instrukcje, które doprowadzą do tego, że podany warunek kiedyś stanie się prawdziwy. W przeciwnym razie pętla się nie zakończy. pętla wykona blok instrukcji zawarty w jej ciele nawet jeżeli warunek jest prawdziwy już na samym początku, ponieważ jego prawdziwość jest sprawdzana na końcu pętli, charakterystyczne dla pętli jest to, że wykona się ona na pewno przynajmniej raz, jeżeli program napotka wewnątrz pętli komendę Exit Do to następuje natychmiastowe przerwanie wykonywania pętli,
48
Elementy programowania144 Przykład Do Loop… Until Do Liczba = InputBox("Wpisz liczbę < 100") Loop Until (Liczba < 100) Pętla będzie wykonywana tak długo, jak będzie podawana liczba >= 100
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.