Do obiektów nie odwołujemy się bezpośrednio, tylko przez ich atrybuty i metody. Obiekt.identyfikator[.identyfikator]



Podobne dokumenty
Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Visual Basic for Applications. Wstęp

LibreOffice Calc VBA

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

VBA-podstawy cz. 1. Począwszy od wersji Office 2010 skoroszyty Excel wsparte makrami VB mają rozszerzenie.xlsm

Właściwości i metody obiektu Comment Właściwości

Zakres tematyczny dotyczący podstaw programowania Microsoft Office Excel za pomocą VBA

Instrukcje cykliczne (pętle) WHILE...END WHILE

Algorytmika i Programowanie VBA 1 - podstawy

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Technologia informacyjna programowanie Janusz Uriasz

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

Wprowadzenie do programowania w VBA

Aplikacje w środowisku VBA. Visual Basic for Aplications

1 Podstawy c++ w pigułce.

Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY.

Makra VBA w Excelu dla początkujących

Visual Basic w programie Excel

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

VISUAL BASIC W EXCELU

Pętle instrukcje powtórzeo

AUTOMATYZACJA PRACY Z UŻYCIEM MAKR. Tom XII NPV WSP.KORELACJI ROZKŁ.EXP JEŻELI COS KOMÓRKA VBA DNI.ROBOCZE ILOCZYN LOG SUMA CZY.

Visual Basic for Application (VBA)

Visual Basic for Application (VBA)

Maxima i Visual Basic w Excelu

Technologie informacyjne: Excel i VBA

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Języki skryptowe w programie Plans

Pętla for. Wynik działania programu:

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Zastanawiałeś się może, dlaczego Twój współpracownik,

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Materiały do laboratorium MS ACCESS BASIC

Cw.12 JAVAScript w dokumentach HTML

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 4. Instrukcja warunkowa.

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Podstawy Programowania C++

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 5. MessageBox, InputBox, instrukcja Select Case i instrukcje pętli.

Programowanie w języku Python. Grażyna Koba

Pascal - wprowadzenie

Pętle. Dodał Administrator niedziela, 14 marzec :27

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

INSTRUKCJA SKOKU GOTO

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

ARKUSZ KALKULACYJNY komórka

PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

PROGRAMOWANIE OBIEKTOWE: VISUAL BASIC VISUAL BASIC FOR APPLICATION (VBA) NA PRZYKŁADZIE EXCELA

Liczby losowe i pętla while w języku Python

1 Podstawy c++ w pigułce.

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Programowanie w języku C++ Grażyna Koba

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 3. Programowanie komputerowe

Algorytmy i struktury danych

Makropolecenia w Excelu

Programowanie w Turbo Pascal

Technologie informacyjne: Arkusz kalkulacyjny

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23)

Bloki anonimowe w PL/SQL

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Przygotowanie własnej procedury... 3 Instrukcja msgbox wyświetlanie informacji w oknie... 6 Sposoby uruchamiania makra... 8

Automatyzacja pracy w AutoCAD

Programowanie komputerowe. Zajęcia 1

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Visual Basic dla AutoCAD

Visual Basic for Application (VBA)

Kiedy i czy konieczne?

Ćwiczenia Skopiować do swojego folderu plik cwiczenia-kl.ii.xls, a następnie zmienić jego nazwę na imię i nazwisko ucznia

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Zapis algorytmów: schematy blokowe i pseudokod 1

Łączenie liczb i tekstu.

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2.

Temat: Arkusze kalkulacyjne. Program Microsoft Office Excel. Podstawy

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Edytor tekstu MS Word 2010 PL. Edytor tekstu MS Word 2010 PL umożliwia wykonywanie działań matematycznych.

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Matematyka grupa Uruchom arkusz kalkulacyjny. 2. Wprowadź do arkusza kalkulacyjnego wartości znajdujące się w kolumnach A i B.

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

VBA praca z makrami w Excelu

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

COMARCH IT AKADEMIA. Programista VBA w Microsoft Excel (microbootcamp)

7. Pętle for. Przykłady

TEMAT: SPOSOBY ADRESOWANIA W

Podstawy JavaScript ćwiczenia

4. Funkcje. Przykłady

Metody numeryczne Laboratorium 2

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Konstrukcje warunkowe Pętle

Transkrypt:

VBA 2 HIERARCHIA OBIEKTÓW ODWOŁYWANIE SIĘ DO OBIEKTÓW WŁAŚCIWOŚCI OBIEKTÓW PĘTLE I INSTRUKCJE WARUNKOWE ZFPBIG LABORATORIUM Przypomnienie VBA Visual Basic for Application skryptowy język programowania wywodzący się z Visual Basic a (VB) zintegrowany z aplikacjami pakietu Microsoft Office i innych programach (np. AutoCAD, WordPerfect). Możliwości języka VBA można wykorzystać przede wszystkim do automatyzacji pracy z dokumentami używając makropoleceń. Możliwości VBA można rozbudowywać włączając dodatkowe biblioteki lub funkcje Windows API co pozwala na tworzenie bardzo rozbudowanych narzędzi z użyciem graficznego interface u użytkownika tak jak to ma miejsce w aplikacjach kompilowanych do pliku EXE. W języku VBA niestety nie można tworzyć samodzielnych skompilowanych plików z rozszerzeniem EXE. Kod programu (makro, procedura, funkcja) napisane w edytorze VBE (Visual Basic Editor [dostęp przez skrót ALT+F11] dostępny w pakiecie Office od wersji 2000+) zapisywane są bezpośrednio w otwartym dokumencie programu w którym wywołujemy wspomniany edytor. Dla aplikacji Excel będą to pliki *.XLS (do wersji 2003) lub *.XLSM (od wersji 2007+), natomiast dla aplikacji MS Word będą to pliki *.DOC (do wersji 2003) lub *.DOCM (od wersji 2007+). ----------------------------------- Excel bazuje na idei programowania obiektowego. Obiekt jest pewnego rodzaju pojemnikiem odzwierciedlającym jakiś element Excela. Jest on identyfikowany przez nazwę i zawiera: atrybuty (property) metody (methods) zdarzenia (events) Do obiektów nie odwołujemy się bezpośrednio, tylko przez ich atrybuty i metody. Obiekt.identyfikator[.identyfikator] Identyfikator może być: metodą, która wykonuje jakieś działanie (dokładnie tak jak procedura lub funkcja), atrybutem, który jest jakąś zwykłą wartością, lub kolejnym obiektem. W ten sposób możemy tworzyć cały łańcuszek, na którego końcu musi być jakiś atrybut lub metoda. HIERARCHIA OBIEKTÓW Obiekt Application (czyli excel) zawiera inne obiekty. Niektóre obiekty są kontenerami dla innych obiektów. Oto przykłady innych obiektów zawartych w obiekcie Application: 1. Workbooks (kolekcja wszystkich obiektów workbook skoroszyt) o Worksheets (arkusze) ChartObjects Range PageSetup (Ustawienia strony) PivotTable (Tabela przestawana) 1

o Charts (wykresy) o Names (nazwa) 2. Windows (kolekcja wszystkich obiektów window okno) Przez prawie cały czas pracy z Excelem jakieś obiekty są zaznaczone. Czyli zostały kliknięte przez użytkownika. Są to: ActiveCell - zaznaczona komórka, ActiveChart - zaznaczony wykres, ActivePrinter - domyślna drukarka, ActiveSheet - aktywny arkusz, ActiveWindow - otwarte okno ActiveWorkbook - wybrany skoroszyt Application Workbooks CommandBar Worksheet Functions Worksheets Buttons Range PivotTable ODWOŁYWANIE SIĘ DO OBIEKTÓW Aby odwołać się do obiektu należy podawać nazwy kwalifikowane, łącząc przy pomocy kropki nazwy poszczególnych obiektów. Worksheets("Arkusz1") sytuacji gdy otwarte są dwa skoroszyty a w każdym znich znajduje się Arkusz1, rozwiązanie polega na utworzeniu odwołania do obiektu poprzez zawarcie w nim nazwy jego kontenera. Workbooks("Zeszyt1"). Worksheets ("Arkusz1") Workbooks("Zeszyt1"). Worksheets ("Arkusz1").Range("A1") Application.( "Zeszyt1"). Worksheets ("Arkusz1").Range("A1") W większości przypadków można pominąć obiekt Application w odwołaniach, ponieważ jest on przyjmowany domyślnie. Jeśli obiekt Zeszyt1 jest aktywnym skoroszytem w odwołaniu można go również pominąć i zastosować następujące odwołanie: Worksheets ("Arkusz1").Range("A1") Range("A1") 2

Obiekt Range Większość pracy z Excelem polega na modyfikowaniu komórek. Prawie każdy element Excela ma odpowiadający sobie obiekt, w efekcie dużą część pracy w VBA wykonujemy przy pomocy zakresów (obiekt Range). Range może reprezentować: pojedynczą komórkę, wiersz, kolumnę, grupę komórek z zakresu ciągłego lub nie albo nawet zakres z kilku skoroszytów jednocześnie. Oznaczenie jednej komórki Worksheets("Arkusz1").Range("A1").Value = 1 Oznaczenie zakresu komórek ActiveSheet.Range("A1:A10").Value = 1 Worksheets("Arkusz1").Range("F1", "F10").Value = 10 Oznaczenie komórek nie sąsiadujących ze sobą Worksheets("Arkusz1").Range("A1, A2, A5") = 1 Cells Kolejna metoda do odwoływania się do zakresu polega na użyciu właściwości cells. Jest używana do obiektów Worksheet i Range. Obiekt.Cells(rowIndex, columnindex) Worksheets("Arkusz1").Cells(9, 9) = 22 Aby do komórki znajdującej się bezpośrednio poniżej aktywnej komórki wprowadzić tekst napis, należy użyć następującej instrukcji (rozpocznij od aktywnej komórki i traktuj ją jakby to była komórka A1. Następnie wpisz tekst napis w komórce znajdującej się w drugim wierszu i pierwszej kolumnie. ActiveCell.cell(2, 1) = "napis" Ta składnia może też zostać użyta w przypadku obiektu Range. W tym przypadku zwrócona komórka jest względna w stosunku do obiektu Range, do którego się odwołano. Jeśli np. obiekt Range jest zakresem A1:D10 (40 komórek), właściwość Cells może pobrać argumet o wartości z przedziału od 1 do 40 i zwrócić jedną z komórek obiektu Range. W przykładzie poniżej wartość 2000 jest wprowadzana do komórki A2, ponieważ jest to 5 komórka zakresu (licząc od góry i w prawą stronę a następnie od początku następnego wiersza): Range("A1:D10").Cells(5) = 2000 WŁAŚCIWOŚCI OBIEKTÓW Każdy obiekt ma swoje właściwości. Value Przykładowo obiekt Range posiada właściwość o nazwie Value. Poniższe makro, po uruchomieniu, będzie wyświetlać w oknie wartość komórki A1. Sub wartosckom() MsgBox Worksheets("Arkusz1").Range("A1").Value 3

ĆWICZENIE 1 Po wykonaniu procedury poniżej w komórce A1 arkusza Arkusz1 pojawi się wartość 123. Sub wartosckom() Worksheets("Arkusz1").Range("A1").Value = 123 Formula ĆWICZENIE 2 HasFormula W kolejnym przykładzie konstrukcja IF THEN została użyta do warunkowego wyświetlania okna dialogowego. jeśli w komórce A1 znajduje się jakaś formuła, to zostanie ona wyświetlona w oknie dialogowym za pomocą właściwości Formula obiektu Range, jeśli w komórce nie ma formuły nic się nie dzieje. Sub hasformula() If Worksheets("Arkusz1").Range("A1").hasFormula Then MsgBox Range("A1").Formula Właściwość Formula obiektu Range jest właściwością do odczytu i zapisu, stąd można umieścić formułę w wybranej komórce arkusza (Niestety musimy użyć wtedy angielskiej wersji formuły.): Sub wstawformule() Range("D12").Formula = "=RAND()*100" Sub wpiszdwa() Range("C1:C10") = 2 Name Name jest atrybutem Obiektu Worksheet i oznacza jego nazwę. Zmieniamy w ten sposób nazwę na "Zielony". Sub zmiennazwe() Worksheets(1).name = "zielony" W ten sposób nadajemy zmiennej NazwaArkusza wartość nazwy pierwszego arkusza i wyświetlany wynik w oknie dialogowym Sub PodajNazwe() NazwaArkusza = Worksheets(1).Name MsgBox NazwaArkusza METODY OBIEKTOWE Oprócz właściwości obiekty posiadają również swoje metody. Metoda to operacja wykonywana na obiekcie. Usunie zawartość komórek wraz z formatowaniem Sub wyczysc() Range("C1:C10").Clear Clear 4

ClearContents Aby usunąć wartości z zakresu I pozostawić formatowanie komórek, należy zastosować metodę obiektu Range o nazwie ClearContents Sub wyczysc() Range("C1", "C10").ClearContents Copy Poniżej zamieszczono przykład procedury kopiującej przy użyciu Copy obiektu Range zawartość komórki A2 z arkusza1 do komórki A2 w arkuszu2. Sub kopiuj() Worksheets("Arkusz1").Range("A2").Copy Worksheets("Arkusz2").Range("A2") W przykładzie poniżej posłużono się sekwencją (spacja za którą znajduje się znak podkreślenia) kontynuującą instrukcję w kolejnym wierszu. Sub kopiuj() Worksheets("Arkusz1").Range("A3").Copy _ Worksheets("Arkusz2").Range("A3") Select Zaznaczanie komórek - do zaznaczania komórek używamy metody Select. Worksheets(2).Range("B1:B15").Select Po wykonaniu powyższego przykładu zakres B1:B15 zostaje podstawiony pod obiekt Selection. Obiekt Selection jest typu Range, ma więc jego wszystkie atrybuty i metody. Sub zaznaczanie() Worksheets(2).Range("B1:B15").Select Selection.Value = 4 Add Niektóre metody przyjmują argumenty, wywołuje się je podobnie jak zwykłe procedury. Worksheets.Add Worksheets(1),, 1 Powyższa metoda dodaje nowy arkusz i może przyjąć cztery argumenty: 1. Before - przed którym arkuszem ma być dodany nowy, 2. After - po którym arkuszu ma być dodany nowy, 3. Count - ile arkuszów ma być dodanych 4. Type - jakiego typu mają być nowe arkusze Powyżej podano pierwszy i trzeci argument. Drugi i czwarty został pominięty, więc między przecinkami jest puste miejsce. Wszystkie argumenty, które znajdują się na końcu są już pominięte, nie trzeba stawiać przecinków, Excel domyśla się, że nie chcemy ich przekazać. Argumenty można też dodać poprzez nazwy, jest to szczególnie przydatne dla metod, które mają dużo, np. kilkanaście argumentów. Nie musimy wtedy stawiać dużo zbędnych przecinków. Instrukcję Worksheets.Add Worksheets(1),,, xlworksheet można tez zapisać: 5

Worksheets.Add before:=worksheets(1), Type:=xlWorksheet OPERATORY Operatorami nazywamy różnego rodzaju znaki i symbole, które sklejają razem instrukcje i słowa kluczowe. Są one bardzo istotne i użyte nieprawidłowo mogą całkowicie zmienić logikę kodu. Operator przyjmuje argumenty tworząc wyrażenia, argumentami operatorów mogą być kolejne wyrażenia itd. W ten sposób można tworzyć skomplikowane instrukcje. Wyrażenie 1 operator Wyrażenie 2 niektóre operatory przyjmują tylko jeden argument operator Wyrażenie Operator przypisania Dim zmienna1 As Integer Dim zmienna2 As Integer Dim zmienna3 As String Dim zmienna4 As Date zmienna1 = 1 zmienna2 = zmienna1 + 2 zmienna3 = "Programowanie w VBA" zmienna4 = MsgBox("Tak czy nie? ", vbyesno) Operator łamania linii Zwykle jedna linia równa się jednej linii kodu. Excel czytając nasz kod spodziewa się, że każda linia będzie zamkniętą logiczną całością. Długie linie kodu można dzielić operatorem " _". Składa się ze spacji i podkreślenia. Sub _ test() zmiennaa = "Bardzo długi i malo treściwy " & _ "tytul lektury szkolnej " & _ "do wypozyczenia w miejskiej " & _ "bibliotece publicznej" MsgBox zmiennaa Dwukropek Przed chwilą pisaliśmy jedną instrukcję w kilku liniach, można też napisać kilka krótkich instrukcji w jednej linii. Poszczególne instrukcje powinny być rozdzielone dwukropkiem. Oczywiście należy to robić tylko jeżeli nie zmniejszy to czytelności kodu. Sub jedenwiersz() Dim imie As String Dim nazwisko As String imie = "Jan": nazwisko = "Kowalski": MsgBox imie & " " & nazwisko Operator Łączenia tekstu Dwa fragmenty tekstu łączymy operatorem "&". Można w ten sposób łączyć kilka tekstów, zmiennych String, lub funkcji zwracających String. Sub zlacz() 6

Const Imie As String = "Jan" Const Nazwisko As String = "Kowalski" MsgBox Imie & " " & Nazwisko Operatory matematyczne VBA udostępnia nam wszystkie podstawowe działania matematyczne, uwzględniając standardową kolejność działań. Operator działanie kolejność przykład - Liczba ujemna 0-2 ^ Potęga 1 3^2 * Mnożenie 2 2*2 / Dzielenie 2 2/2 \ Dzielenie całkowite 3 7\2 =3 mod Reszta z dzielenia 4 7 mod 2 = 1 + dodawanie 5 2+2 - odejmowanie 5 2-2 Zmianę kolejności wykonywania działań możemy dokonywać przy pomocy nawiasów. "(" i ")". Operatory logiczne Różne wyrażenia zwracające wartości logiczne (True/False) możemy dodatkowo łączyć przy pomocy operatorów logicznych. Operator opis And Operator koniunkcji Or Operator alternatywy Not Operator przeczenia 7

JĘZYK VBA POSIADA KILKA INSTRUKCJI DO TWORZENIA PĘTLI WARUNKOWYCH: Instrukcja For... Next - pętla For... Next powtarza blok instrukcji określoną liczbę razy, stosujemy ją jeżeli z góry wiadomo ile razy pętla ma być wykonana. Pętle warunkowe Do...Loop - bardzo wygodnym narzędziem są pętle, służą one do wielokrotnego wykonywania danego bloku kodu. Instrukcji Do...Loop użyjemy jeżeli nie wiemy ile razy pętla ma być wykonana. Jest to pętla warunkowa, w której kluczową cechą jest warunek. Instrukcja If... Then... Else - najczęściej stosowana instrukcja warunkowa. Instrukcja Select Case - jest to inna droga realizacji procesu podjęcia decyzji w programie. Instrukcja For Each... Next - pętla służąca do wykonywania operacji na obiektach kolekcji. PĘTLA FOR NEXT SKŁADNIA: For licznik=pocz to koniec Instrukcje powtarzane Next licznik Lub For licznik=pocz to koniec Step krok Instrukcje powtarzane Next licznik Konstruując pętle For... Next należy na wstępie określić zmienną sterującą tą pętlą (w naszym przypadku jest nią zmienna o nazwie licznik) oraz zdefiniować zakres w jakim ta zmienna będzie się zmieniała, czyli jej wartość początkową, pocz, jej wartość końcową, koniec, oraz krok z jakim ta zmienna będzie się zwiększała przy każdym dojściu do końca pętli, czyli do intrukcji Next. Podczas wykonywania pętli za pierwszym razem, pod zmienną sterującą licznik podstawiona jest wartość początkowa, pocz. Następnie sprawdzany jest warunek, czy wyznaczona w ten sposób zmienna licznik ma wartość mniejszą lub równą niż koniec. Jeśli warunek jest ten jest spełniony to pętla jest wykonywana, czyli wykonywane instrukcje zawarte pomiędzy wierszem For licznik=pocz to koniec, a wierszem Next licznik. Przykład 1. Procedura oblicza sumę pierwszych 10 liczb całkowitych. Po zakończeniu obliczeń procedura wyświetla komunikat zawierający wynik. Sub suma() Makro oblicza sumę pierwszych 10 liczb całkowitych Dim total As Integer Dim i As Integer total = 0 For i = 1 To 10 total = total + i Next i MsgBox total Procedura zawiera kilka często stosowanych elementów języka VBA: Komentarz (wiersz rozpoczynający się apostrofem) 8

Deklaracje zmiennych (wiersz rozpoczynający się poleceniem Dim) Dwie zmienne (total oraz i) Dwie instrukcje przypisania wartości do zmiennych (total = 0 oraz total = total + 1) Struktura pętli (For Next ) Wbudowana funkcja VBA (MsgBox). Przykład 2. Wyświetlenie w oknie dialogowym dziesięciu kolejnych wartości zmiennej licznik. Przykład 3. Zgadywanka w 10 próbach Sub petla1() Dim i As Integer For i = 1 To 10 MsgBox "Wartość licznika " & i Next i Sub petla2() Zgadywanka w 10 próbach Dim i, sekret, strzal As Integer sekret = InputBox("Wprowadzam sekretną liczbę") MsgBox "W 10 próbach zgadnij moją sekretną liczbę" For i = 1 To 10 MsgBox "Próba nr " & CStr(i) strzal = InputBox("Zgaduj") If strzal = sekret Then MsgBox "Brawo. Trafiłeś w " & CStr(i) & " próbie." Exit For End If Next i PĘTLE WARUNKOWE DO...LOOP Mamy do dyspozycji jakby pięć odmian pętli Do...Loop, wszystkie z nich działają w podobny sposób różnice przedstawiam w tabeli poniżej. Typ pętli Do...Loop Do While...Loop Do...Loop While Do Until...Loop Opis Wielokrotnie wykonuje blok kodu tak długo aż instrukcja warunkowa umieszczona wewnątrz tej pętli wykona instrukcje Exit Do. W tym przypadku użycie instrukcji Exit Do jest praktycznie obowiązkowe gdybyśmy jej nie zastosowali pętla byłaby wykonywana w nieskończoność. Rozpoczyna i powtarza blok kodu umieszczonego wewnątrz pętli jeżeli jest spełniony warunek umieszczony na początku tej pętli. Jest to prawdopodobnie najczęściej stosowana odmiana pętli warunkowej. Wykonuje blok kodu umieszczony wewnątrz pętli jeden raz i powtarza go tak długą jak długo jest spełniony warunek umieszczony na końcu pętli. Rozpoczyna i powtarza blok kodu umieszczony wewnątrz pętli 9

Do...Loop Until dopóki nie zostanie spełniony warunek umieszczony na początku tej pętli. Wykonuje blok kodu umieszczony wewnątrz pętli jeden raz i powtarza go do czasu gdy zostanie spełniony warunek umieszczony na końcu pętli. Pętla Do While Loop Do While warunek Intrukcje powtarzane Loop gdzie warunek jest dowolnym wyrażeniem logicznym (np. i<10). Jeśli wartość tego wyrażenia jest równa True, czyli warunek jest spełniony, to intrukcje w pętli są wykonywane. Pod dojściu do intrukcji Loop sterowanie wraca do początkowej instrukcji pętli, Do While warunek i ponownie sprawdzany jest warunek. Jeśli w dalszym ciągu jest on spełniony (tzn. ma wartość True), to instrukcje wewnątrz pętli są wykonywane ponownie i po dojściu do końca pętli sterowanie ponownie wraca do początku, warunek jest sprawdzany itd. Jeśli warunek nie jest spełniony to wykonywana jest instrukcja następna po wierszu Loop. Zatem pętla Do While wykonywana jest tak długo dopóki warunek ma wartość True. Ważna uwaga: aby uniknąć nieskończonych pętli wartość warunku musi mieć możliwość zmiany wewnątrz pętli z wartości True na wartość False. Przykład 4. Sub petla3() Dim a As Integer a = 0 Do While a < 10 a = a + 1 MsgBox a Loop INSTRUKCJA IF THEN ELSE Postać tej instrukcji jest następująca: If warunek Then Else Instrukcje gdy warunek nie jest spełniony End If Warunek może być dowolnym wyrażeniem logicznym lub wyrażeniem relacji, którego wynik jest True lub False. Podczas wykonywania instrukcji If, najpierw obliczany jest warunek i jeśli jego wartość jest równa True (tzn. warunek jest spełniony), to wykonywana jest instrukcja lub instrukcje znajdujące się po słowie kluczowym Then (aż do słowa kluczowego Else), w przeciwnym razie, gdy wartość warunku jest równa False (tzn. warunek nie jest spełniony), to pomijane są instrukcje znajdujące się po słowie Then natomiast program przechodzi do wykonywania instrukcji następujących po słowie kluczowym Else, aż do słów kluczowych End If. W obydwu przypadkach po wykonaniu odpowiedniej grupy instrukcji w zależności od spełnienia warunku, program przechodzi następnie do wykonania kolejnej instrukcji znajdującej się po słowie kluczowym End If Warto zauważyć, że instrukcje wykonywane po Then lub Else mogą zawierać również kolejne instrukcje if/else. 10

Przykład 5 Przykład zastosowania instrukcji if/else do sprawdzenia poprawności wykonania operacji dzielenia. Sub dziel() Dim x As Single Dim y As Single Dim z As Single x = InputBox("Wprowadz liczbę x") y = InputBox("Wprowadz liczbę y") If y <> 0 Then z = x / y MsgBox "wynik dzielenia = " & z Else MsgBox "Pamiętaj... nie dzielić przez zero" End If Złożona instrukcja If Jeśli w wyniku sprawdzenia warunku możliwe są nie dwa, lecz więcej działań do wykonania, wówczas można posłużyć się złożoną instrukcją If. Ma ona następującą postać: If warunek1 Then Instrukcje1 gdy warunek1 jest spełniony ElseIf warunek2 Then Instrukcje2 gdy warunek2 jest spełniony ElseIf warunek_n Then Instrukcje_n gdy warunek_n jest spełniony Else Instrukcje gdy nie spełniony jest żaden z powyższych warunków End If Przykład 6 Sprawdzanie w jakiej porze dnia się znajdujemy Sub czas() Dim t As Date t = Time 'Pobranie czasu systemowego komputera If t < #7:00:00 AM# Then MsgBox "Jest zbyt wcześnie, żeby myśleć" ElseIf t < #12:00:00 PM# Then MsgBox "Przedpołudniowa pora pracy" ElseIf t < #6:00:00 PM# Then MsgBox "Pracujemy też po południu" ElseIf t < #11:00:00 PM# Then MsgBox "Wieczór - czas na relaks" Else MsgBox "Czas na spanie. Noc" End If INSTRUKCJA WYBORU SELECT CASE Instrukcja wyboru Select Case jest bardzo podobna w działaniu do złożonej instrukcji If. Instrukcja ta pozwala wykonać określone grupy instrukcji w zależności od wartości testu sterującego instrukcją Select Case. Postać tej instrukcji jest następująca: Select Case Test Case Wartość1 11

Instrukcje_1 Case Wartość2 Instrukcje_2 Case Wartość3 Instrukcje_3 Case Wartość_n Instrukjce_n Case Else Instrukcje_po_else End Select Przy wykonywaniu instrukcji Select Case najpierw jest obliczana wartość wyrażenia stojącego w wierszu Select Case zaznaczonego wyżej jako Test, a następnie w zależności od jego wartości jest wykonywana ta grupa instrukcji, która znajduje się po Case odpowiadającym obliczonej wartości. Należy zwrócić uwagę, że po każdym Case może występować albo pojedyńcza wartość, albo pewien zakres wartości. W każdym przypadku Visual Basic próbuje dopasować odpowiedni Case do aktualnej wartości wyrażenia testowego Test. Gdy żaden z Case nie może być dopasowany, wówczas wykonywane są instrukcje stojące po Case Else. Należy jednak zauwazyć, że stosowanie Case Else nie jest obowiązkowe. Po wykonaniu odpowiedniej grupy instrukcji z danego Case program przechodzi do instrukcji następującej po End Select. Przykład 7 Sub ocena() Dim ocena As Integer 'Wczytanie danej oceny ocena = InputBox("Podaj ocenę") Select Case ocena Case 6 MsgBox "ocena celująca" Case 5 MsgBox "ocena bardzo dobra" Case 4 MsgBox "ocena dobra" Case 3 MsgBox "ocena dostateczna" Case 2 MsgBox "ocena dopuszczająca" Case 1 MsgBox "ocena niedostateczna" Case Else MsgBox "To nie jest ocena" End Select Przykład 8 Sub ocena2() Dim ocena As Integer ocena = InputBox("Podaj ocenę") Select Case ocena Case 2 To 6 MsgBox "ocena pozytywna" Case 1 MsgBox "ocena negatywna" Case Else MsgBox "To nie jest ocena" End Select 12

Przykład 9 Sub czas() Dim t As Date Select Case Time 'Pobranie czasu systemowego komputera Case ID < #7:00:00 AM# MsgBox "Jest zbyt wcze?nie aby my?leć" Case #7:00:00 AM# To #12:00:00 PM# MsgBox "Przedpołudniowa pora pracy" Case #12:00:00 PM# To #6:00:00 PM# MsgBox "Pracujemy też popołudniu" Case #6:00:00 PM# To #11:00:00 PM# MsgBox "Wieczór - czas na relaks" Case Else MsgBox "Czas na spanie. Noc" End Select ZADANIA: Zadanie Napisać program realizujący algorytm rozwiązania liniowego ax+b=0 Oprócz oczywistego rozwiązania, w przypadku gdy a jest różne od zera, x = -b/a, trzeba rozważyć również przypadki, gdy a=0 oraz b=0. Aby ustrzec się błędów wykorzystania przy wprowadzeniu za a wartości zero, program będzie to sprawdzał i wysyłał odpowiedni komunikat. Formularz do rozwiązania tego zadania powinien umożliwiać wprowadzenie dwóch danych liczbowych: a oraz b, wykonanie obliczeń i wyświetlenie wyniku. 13