1 / 48

Użycie zmiennych w procedurze

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)

beyla
Download Presentation

Użycie zmiennych w procedurze

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Elementy programowania

  2. 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 Elementy programowania

  3. Wymuszenie deklarowania zmiennych Deklarowanie wszystkich zmiennych wymusza na programiście wprowadzona na początku modułu instrukcja OptionExplicit. Jej zaletą jest automatyczne wychwycenie błędów w pisowni zmiennych w chwili kompilacji. Elementy programowania

  4. 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ą. Elementy programowania

  5. 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. Elementy programowania

  6. 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. Elementy programowania

  7. 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. Elementy programowania

  8. 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. Elementy programowania

  9. 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. Elementy programowania

  10. Zasięg zmiennych - podsumowanie Elementy programowania

  11. Zmienne statyczne Deklaracja: StaticNazwaZmiennejAsTypZmiennej • 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 Elementy programowania

  12. Kojarzy odwołanie do obiektu ze zmienną lub właściwością 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: DimzakresAs Object Set zakres=Worksheets(„Arkusz1”).Range(Cells(1,1),Cells(10,5)).Select zakres.ColorIndex=6 zakres.Pattern=xlSolid Elementy programowania

  13. Zmienne obiektowe • można również definiować zmienne jako określony typ obiektu, np. DimzakresAs Range DimarkuszAs Worksheet Setarkusz=Worksheets(„Market”) • jeśli zmienna obiektowa nie jest już potrzebna można zerwać połączenie zmiennej z obiektem: Setzmienna=Nothing Elementy programowania

  14. Przykład zmiennej obiektowej Sub UzycieZmObiektowej() Dim zakres AsObject 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 Elementy programowania

  15. Instrukcje wyboru • If... Then • If...Else • If...ElseIf • Select Case • Select Case...Case Is • Select Case...Case To Elementy programowania

  16. If... Then – składnia instrukcji postać blokowa: If warunek Then blok instrukcji End If postać liniowa: If warunek Then instrukcja1 [:instrukcja2 [:… [:instrukcja N]…]] Elementy programowania

  17. 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, Elementy programowania

  18. 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(„…”) Elementy programowania

  19. 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 Elementy programowania

  20. 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 Elementy programowania

  21. 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 Elementy programowania

  22. 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, Elementy programowania

  23. Przykład struktury If...Then...Else If Zysk > 1200 ThenPodatek = 20Wiadomosc = MsgBox(„Musisz zapłacić większy podatek”) ElsePodatek = 7Wiadomosc = MsgBox(„Możesz zapłacić mniejszy podatek”) End If Elementy programowania

  24. 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 Elementy programowania

  25. 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. Przykład If...Then...ElseIf If Zysk > 1200 ThenPodatek = 20Wiadomosc = MsgBox(„Musisz zapłacić olbrzymi podatek”) ElseIf Zysk > 700 ThenPodatek = 16Wiadomosc = MsgBox(„Musisz zapłacić 16% podatku”) ElseIf Zysk > 400 ThenPodatek = 7Wiadomosc = MsgBox(„Musisz zapłacić 7% podatku”) ElseIf Zysk > 200 ThenPodatek = 4Wiadomosc = MsgBox(„Masz mało ale i tak płać!”) ElsePodatek = 0Wiadomosc = MsgBox(„Z czego Ty żyjesz?”) End If Elementy programowania

  27. Instrukcja Select Case Select Case wyrażenieCase wartość1    blok instrukcji, gdy wyrażenie = wartość1Case wartość2    blok instrukcji, gdy wyrażenie = wartość2 [Case wartość3    blok instrukcji, gdy wyrażenie = wartość3]    .    .    .[CaseElse     instrukcje gdy poprzednie wartości nie pasowały] End Select Elementy programowania

  28. 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: >, <, >=, <=, <>, stosowanejest słowo Is, • do określenia zakresu używane jest słowo  To, Elementy programowania

  29. 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 Przykład Select Case Select Case ZyskCase 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

  30. 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, Elementy programowania

  31. 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). Elementy programowania

  32. 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. Rodzaje instrukcji pętli Elementy programowania

  34. Pętla For… Next Forlicznik = początekTokoniec [Stepkrok] [blok instrukcji] [ExitFor] [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) Elementy programowania

  35. Opis elementów pętli For… Next

  36. Przykłady pętli For… Next Suma = 0For Licznik = 2 To 100 Step 2   Suma = Suma + LicznikNext Licznik For i = 1To10 MsgBox „Aktualna wartość wynosi” + str(i) Next i Str(i) – zwraca wartość typu String reprezentującą wartość numeryczną

  37. Pętla Do While… Loop Do Whilewarunek blok instrukcji [Exit Do] blok instrukcji Loop instrukcje Elementy programowania

  38. 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, Elementy programowania

  39. 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 Elementy programowania

  40. Pętla Do Until… Loop Do Untilwarunek blok instrukcji [Exit Do] blok instrukcji Loop instrukcje Elementy programowania

  41. 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, Elementy programowania

  42. 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 Elementy programowania

  43. Pętla Do Loop… While Do blok instrukcji [Exit Do] blok instrukcji Loop Whilewarunek instrukcje Elementy programowania

  44. 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, Elementy programowania

  45. 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 Elementy programowania

  46. Pętla Do Loop… Until Do blok instrukcji [Exit Do] blok instrukcji Loop Untilwarunek instrukcje Elementy programowania

  47. 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, Elementy programowania

  48. 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 Elementy programowania

More Related