1 / 59

Pętla While… Wend

Pętla While… Wend. While warunek blok instrukcji Wend instrukcje. While… Wend. pętla ta wymaga zastosowania wyrażenia porównania,

cara
Download Presentation

Pętla While… Wend

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. Pętla While… Wend While warunek blok instrukcji Wend instrukcje Elementy programowania

  2. While… Wend • pętla ta 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 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, Elementy programowania

  3. Pętle z warunkiem

  4. Procedury i funkcje Procedura to wydzielony fragment programu, który zostaje wykonany po wywołaniu nazwy procedury.Dzielenie programu na procedury ułatwia nawigację po programie i kontrolę błędów. Głównym zadaniem procedur jest jednak umożliwienie wielokrotnego wykonywania tego samego fragmentu kodu w różnych częściach programu. Zamiast w każdym z tych miejsc wpisywać ten sam fragment kodu, można umieścić go w procedurze i wywoływać procedurę w żądanych miejscach. Skraca to zapis programu i w przypadku błędu pozwala na dokonanie zmian tylko w jednym miejscu. Elementy programowania

  5. Procedury i funkcje • procedury zdarzeniowe - są uruchamiane, kiedy pojawi się określone zdarzenie (np. wciśnięcie klawisza lub przesunięcie myszki), • procedury ogólne - są uruchamiane, kiedy zostaną wywołane przez inne procedury, • procedury Sub - wykonują określone zadania, ale nie zwracają wartości, kod takiej procedury może rezydować w module formularza, ogólnym lub klasy, • procedury funkcyjne (funkcje) - podobnie jak w procedurze typu Sub, kod procedury funkcyjnej może rezydować w formularzu standardowym lub module klasy, w przeciwieństwie do procedur Sub, zwracają wartość do procedury, która ją wywołała, Elementy programowania

  6. Tworzenie funkcji Functionnazwa_funkcji ([lista_parametrów]) instrukcje nazwa_funkcji = wartość End Function lista parametrów – opcjonalna; lista zmiennych reprezentujących argumenty, które są przekazywane do funkcji podczas wywołania; nazwy zmiennych powinny być oddzielone przecinkami; nazwa_funkcji = wartość – wartość zwracana przez funkcję

  7. Funkcje • są dostępne dla wszystkich procedur modułu, • mogą być rekurencyjne (mogą wywoływać siebie, jednak rekurencja może powodować błędy (stack overflow)), • cały wykonywalny kod musi być umieszczony wewnątrz procedur (nie można stworzyć funkcji wewnątrz innej funkcji), • funkcję wywołuje się przez podanie jej nazwy z listą argumentów do przekazania (można wywoływać również przez użycie rozkazu Call), • aby zwrócić wartość z funkcji, należy podstawić tę wartość pod nazwę funkcji, dowolna liczba takich podstawień może się znajdować w dowolnych miejscach funkcji; jeżeli żadna wartość nie zostanie podstawiona pod nazwa_funkcji, funkcja zwróci wartość domyślną: funkcje numeryczne zwracają 0, funkcje łańcuchowe zwracają łańcuch zerowej długości ("") funkcje Variant zwracają Empty, Elementy programowania

  8. Przykład funkcji funkcja dodająca dwie liczby: Function sumaliczb(n,m) sumaliczb = n + m End Function Elementy programowania

  9. Odtwarzanie funkcji • funkcji napisanej w VBA nie można odtworzyć z okna makr i edytora VBA, • funkcję można umieścić w dowolnej formule w arkuszu: • lub wykorzystać w innej procedurze VBA: Sub Uzycie_funkcji () a = 23 b = 14 MsgBox ("Suma liczb wynosi: " & sumaliczb(a, b)) End Sub

  10. Odtwarzanie funkcji z arkusza funkcja utworzona w VBA zachowuje się jak funkcja wbudowana Excela stąd odtwarzamy ją następująco: • wywołujemy polecenie Funkcja… z menu Wstaw, • szukamy naszej funkcji, • i… używamy  Elementy programowania

  11. Dostęp do utworzonych funkcji • funkcja dostępna jest tylko dopóki otwarty jest skoroszyt, w którym jest ona przechowywana, • aby dostępna była zawsze można: • zachować funkcję w skoroszycie makr osobistych, • zachować skoroszyt zawierający funkcję w folderze XLStart, Elementy programowania

  12. Przekazywanie argumentów przez zmienne • argumentami nazywamy jedną lub więcej wartości koniecznych do zadziałania funkcji, • rezultat funkcji zależy od argumentów, • poniższy przykład pokaże jak można przekazać funkcji sumaliczb pewne wartości z innej procedury (zadanie: oblicz ilość liter w imieniu i nazwisku dowolnej osoby): Elementy programowania

  13. Przykład 1 Sub liczbaliter() Dim i As Integer, n As Integer i = Len(InputBox("Podaj imię")) n = Len(InputBox("Podaj nazwisko")) MsgBox ("Imię i nazwisko mają liter: " & sumaliczb(i, n)) End Sub Uwaga! procedurę liczbaliter umieszczamy w tym samym module co funkcję sumaliczb Elementy programowania

  14. Przykład 2 Function lacz_tekst(k, o) lacz_tekst = k + " " + o End Function Sub podaj_tekst() Dim i As String, n As String, r As String i = InputBox("Podaj imię:") n = InputBox("Podaj nazwisko:") r = lacz_tekst(i, n) MsgBox r End Sub Elementy programowania

  15. Czego funkcje nie potrafią? • nie mogą wykonywać poleceń menu, np.: • zawierać instrukcji formatowania danych, • wymazywać, • wstawiać danych, • zawierać instrukcji otwierania pliku, • zmieniać wyglądu ekranu itp. Elementy programowania

  16. Typy argumentów • funkcje wykonują obliczenia i operacje w oparciu o dane otrzymane w postaci argumentów, • nazwy argumentów podawanych w nawiasach pełnią rolę podobną do zmiennych, • podobnie jak zmienne funkcje mogą być różnego typu (np. rezultatem funkcji może być ciąg znaków): Functionnazwa_funkcji (argumenty) Astyp_funkcji (jeśli nie podamy typu danych VBA przypisze typ Variant) Elementy programowania

  17. Przykład Function iloczyn1(licz1, licz2) As Integer iloczyn1 = licz1 * licz2 End Function Sub mnozenie() Dim licz1 As Single Dim licz2 As Single Dim wynik As Single licz1 = 45.33 licz2 = 19.24 wynik = iloczyn1(licz1, licz2) MsgBox wynik End Sub Ponieważ funkcja iloczyn1 ma typ Integer wynik będzie podany jako liczba całkowita Elementy programowania

  18. Przekazywanie argumentów przy wywołaniu procedury (lub funkcji) można przekazać do niej argumenty na dwa sposoby: • przez referencję (domyślny) – do procedury przekazana jest sama zmienna jako argument procedury. Jeżeli wywołana procedura zmienia wartość argumentu, ta zmiana pozostanie, kiedy sterowanie powróci do procedury wywołującej. Aby określić, że argument będzie przekazywany przez referencję w nagłówku Sub wywoływanej procedury należy zadeklarować zmienną ze słowem ByRef. Ponieważ jest to domyślny sposób przekazywania parametrów, można słowo ByRef pominąć. • przez wartość - przekazana zostaje „kopia” zmiennej jako argument procedury. Jeżeli wywołana procedura zmienia argument, ta zmiana nie pozostanie, kiedy sterowanie powróci do procedury wywołującej. Aby określić, że argument ma być przekazany przez wartość w nagłówku Sub wywoływanej procedury należy użyć słowa kluczowego ByVal, aby zadeklarować zmienną.

  19. Przykład przekazania argumentu przez wartość Function srednia1(ByVal licz1, ByVal licz2, ByVal licz3) licz1 = licz1 + 1 srednia1 = (licz1 + licz2 + licz3) / 3 End Function Sub trzyliczby1() Dim licz1 As Integer, licz2 As Integer, licz3 As Integer licz1 = 10 licz2 = 20 licz3 = 30 MsgBox srednia1(licz1, licz2, licz3) MsgBox licz1 MsgBox licz2 MsgBox licz3 End Sub Elementy programowania

  20. Argumenty opcjonalne • umieszcza się je na końcu listy argumentów, które są obowiązkowe, • poprzedza słowem kluczowym Optional, • można tych argumentów nie użyć w procedurze, • nie można określić typu danych za pomocą słowa kluczowego As w sposób jawny (w VBA mają domyślny typ Variant), Elementy programowania

  21. Przykład Function srednia3(licz1, licz2, Optional licz3) Dim ileliczb As Integer ileliczb = 3 If IsMissing(licz3) Then licz3 = 0 ileliczb = ileliczb - 1 End If srednia3 = (licz1 + licz2 + licz3) / ileliczb End Function Sub argumentopcjonalny() licz1 = CSng(InputBox("Podaj pierwszą liczbę")) licz2 = CSng(InputBox("Podaj drugą liczbę")) licz3 = CSng(InputBox("Podaj trzecią liczbę")) MsgBox ("Średnia z dwóch pierwszych liczb: " & srednia3(licz1, licz2)) MsgBox ("Średnia z trzech liczb: " & srednia3(licz1, licz2, licz3)) End Sub IsMissing – funkcja sprawdzająca czy przekazano opcjonalny argument procedury; CSng – konwersja wartości na Single

  22. Funkcje wbudowane listę funkcji VBA można obejrzeć w Pomocy lub przeglądarce obiektów VBA: Elementy programowania

  23. Funkcje matematyczne Elementy programowania

  24. Funkcje daty i czasu Elementy programowania

  25. Funkcje tekstowe

  26. Funkcje tekstowe cd. Elementy programowania

  27. Funkcje wejścia-wyjścia Elementy programowania

  28. Funkcje konwersji danych

  29. Funkcje testujące dane

  30. Funkcje testujące dane Elementy programowania

  31. Funkcja MsgBox MsgBox(Komunikat [, Przyciski] [, Tytuł] [, PlikHelp, HelpContext])

  32. Funkcja MsgBox Elementy programowania

  33. Argument Przyciski funkcji MsgBox

  34. Argument Przyciski funkcji MsgBox Elementy programowania

  35. Argument Przyciski funkcji MsgBox

  36. Argument Przyciski funkcji MsgBox Elementy programowania

  37. Wartości i stałe zwracane przez funkcję MsgBox Elementy programowania

  38. Przykład funkcji MsgBox Dim Wcisniety As Variant Wcisniety = MsgBox("Czy chcesz kontynuowac?", vbYesNo+vbCritical+vbDefaultButton2, "Pytanie", "DEMO.HLP", 10) Elementy programowania

  39. Funkcja InputBox InputBox(Pytanie [, Tytuł] [, DomyślnyTekst] [, XPos] [, YPos] [,PlikPomocy, HelpContext])

  40. Argumenty funkcji InputBox

  41. Argumenty funkcji InputBox Elementy programowania

  42. Przykład użycia funkcji InputBox Dim Liczba, Tekst As Variant Liczba = InputBox("Wprowadz liczbe", "Okno wprowadzania", "1") Tekst = InputBox("Wpisz tekst", , , 100, 100, "DEMO.HLP", 10)

  43. Listy i tablice w VBA • definicja • przykłady: • jednowymiarowa: Miasto(3) • 2-wymiarowa: Wymiana(4,3) Elementy programowania

  44. Deklarowanie tablicy DimNazwaTablicy (wymiar) AsTypDanych np. Dim DniTyg(7) As String Dim Miasto(3) As String Dim Wymiana(4,3) As Variant deklaracje tablic jednowymiarowych deklaracja tablicy dwuwymiarowej

  45. Tablice - indeksowanie UWAGA! VBA ustawia indeks tablicy od 0, stąd tablica zadeklarowana: Dim Miasto(3) As String ma 4 elementy a nie 3! aby uniknąć indeksowania od 0 można: • podać górną i dolną granicę wymiaru: Dim Miasto(1 To 3) As String Dim Tabela (5 To 15) • w polu deklaracji General (lub w Module) wpisać instrukcję Option Base 1 Elementy programowania

  46. Tablice Przykład, jak można odnieść się do elementu tablicy w kodzie:Miasto (1) = „Warszawa” ‘ Ta instrukcja ustawia 1-szy (lub 2-gi) element tablicy Miasto na wartość Warszawa Tabela (3) = 28759‘ Ta instrukcja ustawia 3-ci (lub 4-ty) element tablicy Tabela na wartość 28759 Elementy programowania

  47. Tablice statyczne i dynamiczne • statyczne – tablice o z góry zadeklarowanym wymiarze, • dynamiczne – wymiar może ulegać wielokrotnym zmianom w trakcie wykonywania programu (wymiar takiej tablicy nie jest określany), Elementy programowania

  48. Deklaracja tablicy dynamicznej DimNazwaTablicy () AsTypDanych po czym po określeniu, która zmienna przechowuje wymiar, ponownie w kodzie definiujemy tablicę następująco: ReDimNazwaTablicy (zmienna) AsTypDanych lub ReDimNazwaTablicy (Wymiary) [AsTyp] [, NazwaTablicy (Wymiary) [AsTyp]]... Elementy programowania

  49. Przykłady deklaracji tablic dynamicznych Dim TablicaDynamiczna ()   'deklaracja tablicy dynamicznej ReDim TablicaDynamiczna (10)   'ustalenie rozmiarów tablicy ... ReDim TablicaDynamiczna (15)   'zmiana rozmiarów tablicy Elementy programowania

  50. Przykład tablicy dynamicznej Sub tablice_dynamiczne() Dim licznik As Integer Dim zbior() As Integer ‘ deklaracja tablicy k = CSng(InputBox("Podaj rozmiar")) ReDim zbior(k) ‘ ustalenie rozmiaru tablicy For licznik = 1 To k zbior(licznik) = licznik + 1 MsgBox (licznik & " element tablicy wynosi: " & zbior(licznik)) Next licznik End Sub procedura wpisuje do tablicy o rozmiarze k elementy o wartości k +1 Elementy programowania

More Related