PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC



Podobne dokumenty
PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC

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

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

LibreOffice Calc VBA

Algorytmika i Programowanie VBA 1 - podstawy

Visual Basic for Application (VBA)

PROGRAMOWANIE W EXCELU W JĘZYKU VISUAL BASIC FOR APPLICATIONS

VISUAL BASIC W EXCELU

Visual Basic for Applications. Wstęp

Maxima i Visual Basic w Excelu

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

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

Visual Basic for Application (VBA)

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

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

Makropolecenia w Excelu

Kiedy i czy konieczne?

Wprowadzenie do programowania w VBA

Nagrywanie Makr. Na karcie Dostosowywanie Wstążki zaznaczamy kartę Deweloper.

Visual Basic for Application (VBA)

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

VBA praca z makrami w Excelu

Utworzenie funkcji użytkownika w Visual Basic

Cw.12 JAVAScript w dokumentach HTML

VBA praca z makrami w Excelu

1 Algorytmy. Algorytmy i VBA. 1. Zapoznaj się z symboliką schematów blokowych.

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

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

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

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

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Makra VBA w Excelu dla początkujących

Podstawy programowania skrót z wykładów:

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

1 Podstawy c++ w pigułce.

Technologia informacyjna programowanie Janusz Uriasz

Visual Basic w programie Excel dla Windows

Temat: Arkusze kalkulacyjne. Program Microsoft Office Excel. Podstawy

Ćwiczenie 1 Obsługa makr

Programowanie komputerowe. Zajęcia 1

Pętle instrukcje powtórzeo

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

Technologie informacyjne: Arkusz kalkulacyjny

Programowanie w języku Python. Grażyna Koba

Odczyt danych z klawiatury Operatory w Javie

Visual Basic w programie Excel

TEMAT: SPOSOBY ADRESOWANIA W

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

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

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

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

Visual Basic dla AutoCAD

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ć

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

Technologie informacyjne: Excel i VBA

Podstawy Programowania Podstawowa składnia języka C++

Excel formuły i funkcje

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Elektroenergetyki Technologie informatyczne

Automatyzowanie zadan przy uz yciu makr języka Visual Basic

Podstawy Programowania C++

PROGRAMOWANIE W EXCELU W JĘZYKU VISUAL BASIC FOR APPLICATIONS

Makropolecenia w PowerPoint Spis treści

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Działki Przygotowanie organizacyjne

4. Funkcje. Przykłady

Automatyzacja pracy w AutoCAD

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

Zajęcia: VBA TEMAT: VBA PROCEDURY NUMERYCZNE Metoda bisekcji i metoda trapezów

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

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

Makra w arkuszu kalkulacyjnym

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

Aplikacje w środowisku VBA. Visual Basic for Aplications

Część I: Excel - powtórka

Maxima i Visual Basic w Excelu

INSTRUKCJA SKOKU GOTO

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

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

1 Podstawy c++ w pigułce.

Programowanie w Turbo Pascal

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Struktura pliku projektu Console Application

Języki skryptowe w programie Plans

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

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Co to jest arkusz kalkulacyjny?

PRZETWARZANIE I ORGANIZOWANIE DANYCH: ARKUSZ KALKULACYJNY

Pascal - wprowadzenie

Metody numeryczne Laboratorium 2

Algorytmy i struktury danych

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Przewodnik dla każdego po: Dla każdego coś miłego Microsoft Excel 2010

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

1. JEŻELI - funkcja służąca do testowania warunków logicznych. JEŻELI(warunek_logiczny; wartośd_dla_prawdy; wartośd_dla_fałszu)

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Arkusz kalkulacyjny. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Wprowadzenie do MS Excel

Transkrypt:

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 1 PROGRAMOWANIE MAKR W PROGRAMIE EXCEL W JĘZYKU VISUAL BASIC W programie Microsoft Excel można często powtarzane czynności zautomatyzować przy użyciu tzw. makr. Makro jest serią poleceń i funkcji, które są zapisywane za pomocą języka programowania i może być uruchomione zawsze, gdy zachodzi potrzeba ich wykonania. Firma Microsoft dostarcza z pakietem Office język programowania Visual Basic. Makra można rejestrować, jak rejestruje się muzykę przy użyciu magnetofonu lub można napisać za pomocą języka Visual Basic, i dalej można uruchomić, aby wykonać zarejestrowane bądź zapisane polecenia. Przykład 1. Rejestrowanie makra. W nowym arkuszu wykonaj następujące czynności: 1. Z menu narzędzia wybierz polecenia makro zarejestruj nowe makro. 2. Zmień nazwę makra na. Jan i wybierz klawisz skrótu na Ctrl-j i potwierdź OK rozpoczął się tryb nagrywania makra. 3. W wybranej komórce wpisz napis Jaś, potwierdź wpisany napis myszką na pasku formuły. 4. Zakończ nagrywanie makra ikoną na pasku zadań. 5. Wybierz nową komórkę i naciśnij Ctrl-j. Przykład 2. Edycja Makra. 1. Z menu narzędzia wybierz polecenia makro makra... 2. Wybierz makro Jan i kliknij Edycja. 3. W oknie edytora Visual Basic powinieneś zobaczyć tekst podobny do wypisanego piniżej: Sub Jan() ' ' Jan Makro ' Makro zarejestrowane 00-02-25, autor Tadeusz Ziębakowski ' ' Klawisz skrótu: Ctrl+j ' ActiveCell.FormulaR1C1 = "Jaś" 4. Dopisz następujący tekst: Sub Małgorzata() ActiveCell.FormulaR1C1 = "Małgosia" 5. Przejdź do arkusza kalkulacyjnego i wybierz polecenia makro makra...

strona 2 T.Z ię b a k o ws k i : PRO G R A MO W AN IE M A K R... 6. Wybierz makro Małgorzata i kliknij Opcje i wpisz klawisz skrótu Ctrl-m. 7. Wybierz nową komórkę i naciśnij Ctrl-m. Uruchamianie makra niekoniecznie musi odbywać się poprzez klawisz skrótu. Można to robić z menu Narzędzia bądź poprzez umieszczenie w arkuszu specjalnego przycisku. Przejdziemy teraz do omówienia podstawowych elementów składni języka Visual Basic. Na potrzeby niniejszego zbioru zadań ograniczymy się do jego skrótowego omówienia bez wchodzenia w istotę bardziej złożonych zapisów. 1. Zmienne Każde makro jest zapisem czynności, które wykonywane są na pewnym określonym zbiorze informacji, który będziemy nazywać danymi. Dane mogą być zapisane bądź w komórkach arkusza kalkulacyjnego bądź w pewnym zarezerwowanym obszarze pamięci i są reprezentowane wewnątrz makra poprzez zmienne. Każda zmienna określona jest poprzez podanie nazwy, którą ustala piszący makro tworząc ją z liter i cyfr (pierwszym znakiem w nazwie powinna być litera). Elementy struktury arkusza kalkulacyjnego są w Visual Basicu for Applications reprezentowane przez tzw. obiekty i opisywane za pomocą specjalnych zmiennych, służących do identyfikowania m.in. arkuszy, komórek czy zakresów komórek W niniejszym opracowaniu ograniczymy się do opisu trzech obiektów: Range., ActiveCell i Selection.. ActiveCell.Value ActiveCell lub przechowuje wartość wybranej komórki ActiveCell.FormulaR1C1 przechowuje formułę wybranej komórki Selection.Value Selection Range("A1:C5").Value Range("A1:C5") Selection.Cells(1,2).Value Selection(1,2) lub pozwala wpisać wartości do wybranego zakresu komórek lub pozwala wpisać wartości do zakresu A1:C5 pozwala wpisać wartości do komórki w pierwszym wierszu i drugiej kolumnie w wybranym obszarze. Range("A1:C5").Cells(5).Value Range("A1:C5")(5) pozwala wpisać wartości do 5-tej komórki w zakresie A1:C5 tj. komórki B2. Range("A1:C5").Cells.Count podaje liczbę komórek w zakresie, w tym przypadku 15. lub lub

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 3 Range("A1:C5").Columns.Count podaje liczbę kolumn w zakresie, w tym przypadku 3. Range("A1:C5").Rows.Count podaje liczbę wierszy w zakresie, w tym przypadku 5. Podobnie jak komórki w programie Excel zmienne mogą przechowywać dane różnych typów, przy czym w Visual Basic różnorodność typów jest znacznie większa (co więcej można tworzyć własne typy danych, czego nie będziemy omawiać). Typy danych mają swoje nazwy. Wymienimy tylko kilka podstawowych typów: typ opis operacje symbol Byte liczby całkowite: Od 0 do 255 Integer Single Double Currency Boolean liczby całkowite: Od -32 768 do 32 767 liczby rzeczywiste: Od ok.-3,4 10 38 do ok. 3,4 10 38 liczby rzeczywiste: Od ok.-1,8 10 308 do ok. 1,8 10 308 liczby wyrażające walutę -922 337 203 685 477,5808 do 922 337 203 685 477,5807 wartości logiczne: True (prawda), False (fałsz) dodawanie odejmowanie mnożenie dzielenie całkowite reszta z dzielenia dodawanie odejmowanie mnożenie dzielenie potęgowanie koniunkcja alternatywa alternatywa wykluczna negacja równoważność implikacja + - * Div Mod + - * / ^ And Or Xor Not Eqv Imp String łańcuchy znaków łączenie łańcuchów &, + Date daty i czas specjalne funkcje daty i czasu Variant Połączenie Double i String jak dla Double i String operatory relacji (wynik jest typu Boolean): =,<,<=,>,> =,<> W języku Visual Basic nadanie wartość zmiennej określa typ zmiennej, jednak w bardziej złożonych makrach w celu uniknięcia błędów powinno się określić typ zmiennej za pomocą specjalnej instrukcji deklaracji Dim. 2. Wyrażenia Wyrażenia tworzymy podobnie jak formuły w arkuszu, z tym, że zamiast adresów komórek wstawiamy zmienne. W wyrażeniach możemy wykorzystywać funkcje wewnętrzne Visual Basic podobne do funkcji Excela 1, a także istnieje możliwość definiowania własnych funkcji. 1 W Visual Basic-u należy bardziej niż w Excel-u uważać na zgodność typów argumentów funkcji z używanymi zmiennymi. Wykaz funkcji i ich opis można znaleźć w pomocy Visual Basic.

strona 4 T.Z ię b a k o ws k i : PRO G R A MO W AN IE M A K R... Przy tworzeniu wyrażeń należy zwrócić szczególną uwagę na zgodność typów zmiennych, funkcji i używanych operatorów. 3. Instrukcje Czynności, które ma realizować makro zapisujemy w postaci tzw. instrukcji. Instrukcje zapisujemy w kolejnych liniach. Jeśli chcemy kilka instrukcji zapisać w jednej linii oddzielamy je dwukropkami. Uwaga: napisy zaczynające się od apostrofu nie są instrukcjami lecz komentarzami. Omówimy kilka najważniejszych instrukcji: Instrukcja przypisania Instrukcja ta ma postać: zmienna = wyrażenie W wyniku wykonania instrukcji zmienna otrzymuje wartość wyrażenia. Przykłady: d = b^2 4*a*c i = i + 1 ActiveCell.FormulaR1C1 = "Jaś" Pierwsza instrukcja nadaje zmiennej d wartość wyrażenia b^2 4*a*c, gdzie a,b,c są zmiennymi. Druga powiększa wartość zmiennej i o jeden. Trzecia wstawia do aktywnej komórki napis "Jaś". Instrukcja wywołania procedury Instrukcja ta ma postać: Przykład: <nazwa procedury> parametr1, parametr2,... MsgBox "Czas na naukę pisania makr!" Instrukcja ta wyświetla komunikat "Czas na naukę pisania makr!" wykorzystując procedurę Visual Basica MsgBox. Instrukcja warunkowa Instrukcja ta ma postać: If warunek Then Else _else lub w wersji krótszej: If warunek Then

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 5 Inną możliwością jest zastosowanie składni blokowej: If warunek Then Else _else (w wersji bardziej rozbudowanej:) If warunek Then ElseIf warunek1 Then Instrukcje1 ElseIf warunek2 Then Instrukcje2 Else _else (lub w wersji krótszej:) If warunek Then warunek powinien być wyrażeniem logicznym. W przypadku gdy jest on prawdziwy wykonywane są w przeciwnym przypadku _else. W wersji krótszej gdy warunek nie jest spełniony następuje przejście do instrukcji następnej po If. W składni jednowierszowej oddziela się dwukropkami. Instrukcja pętli For For licznik = początek To koniec Step krok Next licznik licznik jest zmienną numeryczną, początek i koniec są wartościami początkowymi i końcowymi licznika. Wykonywane są, po każdym wykonaniu licznik zwiększany jest o wartość krok lub o 1 gdy fraza Step jest pominięta. Wykonywanie zostanie przerwane gdy licznik przekroczy wartość koniec. Działanie pętli for można dodatkowo przerwać instrukcją Exit For umieszczoną wewnątrz pętli. Instrukcja pętli Do Instrukcja ta maże mieć następujące warianty składni: Do While warunek Loop albo Do Until warunek Loop albo Do Loop While warunek albo Do Loop Until warunek Jedna lub kilka instrukcji oznaczonych przez powtarzanych jest tak długo, jak długo warunek jest spełniony wariant ze słowem While - albo dopóki nie stanie się

strona 6 T.Z ię b a k o ws k i : PRO G R A MO W AN IE M A K R... prawdziwy - wariant ze słowem Until, przy czym warunek można sprawdzać na początku lub na końcu. Instrukcja deklaracji Instrukcja ta przydziela pamięć zmiennej i określa jej typ i w uproszczeniu jest następującej postaci: Dim zmienna1 As typ1, zmienna2 As typ2,... Przykłady: Poniżej zadeklarowano3 zmienne: pierwszą typu Variant (typ domyślny), drugą typu Double, trzecią typu String. Dim liczba, numer As Double, napis As String W poniższym wierszu zadeklarowano tablicę o stałym rozmiarze jako tablicę o elementach typu Integer zawierającą 11 wierszy i 11 kolumn: Dim MojaTab(10, 10) As Integer Pierwszy argument reprezentuje wiersze; drugi argument reprezentuje kolumny, oba standardowo numerowane od 0 - inaczej niż ma to miejsce w przypadku wyrażenia Cells(i,j). 4. Procedury i Funkcje Każde makro w Excelu jest zapisywane jako procedura Visual Basic. Podczas pisania bardziej rozbudowanych makr często zdarza się, że taki sam lub podobny fragment makra występuję w kilku miejscach. Można wówczas taki powtarzający się fragment zapisać w postaci dodatkowej procedury lub funkcji. Procedura lub funkcja - wyodrębniona sekwencja instrukcji, stanowiąca pewną całość, posiadająca jednoznaczną nazwę i ustalony sposób wymiany informacji z pozostałymi częściami programu lub makra. Stosowanie procedur i funkcji na ogół skraca zapis, a także ułatwia pisanie dużych rozbudowanych makr dzięki podzieleniu go na odrębne logicznie spójne części. Różnica pomiędzy procedurą a funkcją polega na przekazywaniu wartości końcowych. Procedury i funkcje definiuje się przy pomocy instrukcji Sub i Function: Sub nazwa (lista_argumentów) Function nazwa (lista_argumentów) As typ nazwa = wyrażenie End Function lista_argumentów jest listą zmiennych oddzielonych przecinkami i jest nieobowiązkowa podobnie jak typ, który określa typ zwracanego wyniku przez funkcję. W definicji funkcji typ wyrażenia (wyrażenie) powinien być zgodny z typem funkcji. Ponadto w

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 7 definicji procedury i funkcji mogą się pojawić Exit Sub i odpowiednio Exit Function przerywające działanie procedury lub funkcji. Przykład 3. Makro Main wywołuje dwie procedury: Sygnał, która wysyła krótkie sygnały dźwiękowe (procedura Beep) w ilości określonej przez parametr i procedurę Komunikat, która wypisuje napis "Czas na kolejny przykład!". Sub Main() 'źródło: plik pomocy Visual Basic Sygnał 100 Komunikat Sub Sygnał(ile_dźw) For licznik = 1 To ile_dźw Beep Next licznik Sub Komunikat() MsgBox "Czas na kolejny przykład!" Przykład 4 2 Makro rozwiązuje równanie kwadratowe ax bx c 0 w liczbach rzeczywistych. Współczynniki a,b,c należy wpisać do komórek A1,B1,C1. Pierwiastki, jeśli są, wypisane będą w komórkach A3 i A4. Makro zawiera jawną deklarację zmiennych instrukcją Dim, bez której makro będzie działać, lecz zmienne a,b,c i delta będą typu Variant. Sub równanie_kwadratowe() Dim a As Single, b As Single, c As Single, delta As Single a = Range("A1") b = Range("B1") c = Range("C1") delta = b ^ 2-4 * a * c If a = 0 Then MsgBox "To nie jest równanie kwadratowe" Exit Sub If delta < 0 Then MsgBox "Nie ma rozwiązań": Exit Sub If delta = 0 Then Range("A3") = -b / (2 * a) Else Range("A3") = (-b + Sqr(delta)) / (2 * a) Range("A4") = (-b - Sqr(delta)) / (2 * a)

strona 8 T.Z ię b a k o ws k i : PRO G R A MO W AN IE M A K R... Przykład 5 Makro w kolumnie A mnoży po kolei przez 2 każdą liczbę, aż do napotkania komórki pustej. Przykład 6 Sub Podwajaj() i = 1 Do While Range("A1").Cells(i, 1) <> "" Range("A1").Cells(i, 1) = 2 * Cells(i, 1) i = i + 1 Loop Funkcja wyznacza normę euklidesową wektora o współrzędnych x,y,x. Funkcja ta jest dostępna w arkuszu jako funkcja użytkownika. Należy pamiętać aby w formule Excela parametry funkcji oddzielać średnikami. Function Norma(x As Single,y As Single,z As Single) _ As Single Norma = Sqr(x ^ 2 + y ^ 2 + z ^ 2) End Function Uwaga: Podkreślenie poprzedzone spacją oznacza kontynuację wierszu Zadania instrukcji w następnym 1. Napisz makro, które przepisuje wartości co drugiej komórki kolumny A do kolumny B po kolei, aż do napotkania komórki pustej. 2. Napisz makro, które przepisuje wartość komórki A1 do A2, A2 do A3,...,A19 do A20 i A20 do A1. 3. Napisz makro, które w zaznaczonym zakresie komórek odwraca kolejność danych tzn. zamienia wartości pierwszej i ostatniej komórki, drugiej i przedostatniej itd. 4. Zaprojektuj makro, które rozwiązuje układ dwóch równań liniowych z dwoma niewiadomymi: a1x b1 y c1 a2 x b2 y c2 Wskazówki: Przyjmijmy D a 1 b 2 b1 a 2, D x b2c1 b1c 2, D y a2c1 a1c2. Z algebry wiadomo, że jeśli D 0 to mamy jedno rozwiązanie x D / x D i y D D y /. Jeśli D 0, D 0 i D 0 to mamy nieskończenie wiele rozwiązań: dla dowolnego x y x, y ( c1 a1x) / b1 spełnia układ równań. Jeśli D 0, D x 0 lub Dy 0 to układ nie ma rozwiązań. Współczynniki a, b, c można wpisać do zakresu A1:C2. Makro i powinno zbadać również złośliwe przypadki, gdy współczynniki wyznaczają układu równań z dwoma niewiadomymi. i i a, b, c nie 5. Należy zaprojektować arkusz i makra, tworzące grę 15+1. Plansza tej gry jest pokazana poniżej: i i i

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 9 Zadaniem grającego jest ustawienie liczb od 1 do 15 po kolei przez przesuwanie liczb. Można przesuwać liczby pionowo lub poziomo na puste miejsce (w obrębie prostokąta). Po wskazaniu komórki, przycisk Przesuń powinien uruchomić makro, które wykona przesunięcie np. w powyższej sytuacji liczba 6 powinna się przesunąć w prawo. Zadaniem przycisku Nowa gra jest ponowne, losowe rozmieszczenie liczb wewnątrz prostokąta. Liczby losowe można otrzymać za pomocą funkcji Rnd, - jej omówienie można znaleźć w pomocy Visual Basic.

strona 10 T.Z ię b a k o ws k i : PRO G R A MO W AN IE M A K R... Ćwiczenie: Podstawy tworzenia makr za pomocą języka Visual Basic z wykorzystaniem edytora VBA. Zagadnienia: Podstawowe elementy języka VB: zmienne, typy danych, deklaracji i podstawienia. Dostęp do danych arkusza kalkulacyjnego za pomocą obiektów typu Range. Procedura MsgBox. 1. Obiekt Range Zadanie 1 Wpisz w edytorze VBA makro: Sub Dodaj() Range( C1 )= Range( A1 )+ Range( B1 ) W Arkuszu wpisz do komórek A1 i B1 dowolne wartości liczbowe i wykonaj makro. Zadanie 2 Należy obliczyć wartość wyrażenia: (*) dla wartości a,b znajdujących się w komórkach odpowiednio A1 i B1. W tym celu napisz następujące makro: Sub Wynik() Dim a as Double,b as Double,c as Double a = Range( A1 ) b = Range( B1 ) c = tu należy wypisać wyrażenie zmiennych a i b Range( C2 ) = c obliczające (*), skonstruowane na zasadach podobnych do pisania formuł EXCELA Po uruchomieniu makra w komórce C2 pojawi wynik. Zadanie 2 Napisz makro, które zamienia wartości dwóch komórek, np. A2 i B2. (Wskazówka: wprowadź dodatkową zmienną w celu zapamiętania wartości jednej z komórek) 2. Obiekt Selection i procedura MsgBox Zadanie 3 W edytorze VBA wpisz makro:

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 11 Sub obszar() Dim n As Integer, w As Integer, k As Integer n = Selection.Count w = Selection.Rows.Count k = Selection.Columns.Count MsgBox "liczba komórek " & n MsgBox "liczba wierszy " & w MsgBox "liczba kolumn " & k W arkusz kalkulacyjnym zaznacz zakres komórek a następnie uruchom powyższe makro. Wewnętrzna procedura MsgBox powoduje wypisanie komunikatów. 3. Obiekt ActiveCell Zadanie 4 Wpisz w edytorze VBA makro: Sub Dodaj_1() ActiveCell = ActiveCell + 1 Każde uruchomienie makra zwiększy wartość wybranej komórki o 1. Zadanie 5 Należy wyznaczyć kolejne sumy częściowe szeregu geometrycznego n 1 q. Szereg n 1 ten jest zbieżny gdy q < 1. Każda suma częściowa jest postaci 2 n 1 S n 1 q q q. Sumy te spełniają związek rekurencyjny S n 1 qs n 1, który wykorzystamy w tym ćwiczeniu. W edytorze VBA wpisz makro: Sub szereg() Dim S as Double, q as Double q = 0.5 S = ActiveCell ActiveCell.Offset(1, 0).Select ActiveCell = q * S + 1 Każde uruchomienie makra oblicza kolejną sumę szeregu geometrycznego. Instrukcja ActiveCell.Offset(1, 0).Select przesuwa wybranie komórki w dół. Zadanie 6 Oblicz przybliżoną wartość liczby wykorzystując szereg: 1 1 1 1 1 1 4 3 5 7 9 11

strona 12 T.Z ię b a k o ws k i : PRO G R A MO W AN IE M A K R... Przykłady makr i funkcji: 1. Dotyczy pliku Dochód.xls Function grupa(dochód As Currency) As Integer Wyznacza grupe podatkowa If dochód < 37024 Then grupa = 1 If (dochód >= 37024) And (dochód < 74048) Then grupa = 2 If dochód >= 74048 Then grupa = 3 End Function ------------------------------------------------------------------ Function grupa1(dochód As Variant) As Integer Wyznacza grupe podatkowa drugi sposób If dochód < 37048 Then grupa1 = 1 ElseIf dochód < 74048 Then grupa1 = 2 Else grupa1 = 3 End Function ------------------------------------------------------------------ Sub dochód1() Kopiuje do nowej kolumny dochody 1 grupy podatkowej Dim doch As Range, doch1 As Range, i As Integer Set doch1 = Range("I12:I71") Set doch = Range("dochód") For i = 1 To doch.count If doch(i) < 37024 Then doch1(i) = doch(i) Next i ------------------------------------------------------------------ Function podatek(dochód As Currency) As Currency Oblicza podatek dochodowy na podstawie dochodu If dochód < 37048 Then podatek = 0.19 * dochód - 530.08 ElseIf dochód < 74048 Then podatek = 0.3 * (dochód - 37024) + 6504.48 Else podatek = 0.4 * (dochód - 74048) + 17611.68 End Function ------------------------------------------------------------------ Sub Dane1grupy() Podaje ilość osób i całkowity dochód w 1 grupie podatkowej Dim doch As Range Set doch = Range("dochód") Dim Licz As Integer, suma As Currency, i As Integer, max As Currency Licz = 0 suma = 0 For i = 1 To doch.count If doch(i) < 37024 Then

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 13 Licz = Licz + 1 suma = suma + doch(i) Next i MsgBox "Liczba osób w 1 grupie podatkowej wynosi: " & Licz MsgBox "Suma dochodów w 1 grupie podatkowej wynosi: " & suma max = 0 For i = 1 To doch.count If doch(i) < 37024 And doch(i) > max Then max = doch(i) Next i MsgBox "maks. dochód w 1 grupie podatkowej wynosi: " & max 2. Dotyczy pliku Rodzina.xls W przykładach dotyczących arkusza RODZINA należy nazwać obszary komórek wg wzoru przedstawionego poniżej.

strona 14 T.Z ię b a k o ws k i : PRO G R A MO W AN IE M A K R... 1. Makro wypisuje zakupy z grupy rozrywka w zakresie K3 do K100. 2. Makro wypisuje w zakresie H3 do H5 trzy maksymalne kwoty wydatków, a w zakresie I3:I5 wypisuje daty, w których te wydatki były poniesione. 3. Makro zaznacza na żółto zakupy jajek.

T. Zię b a k o ws k i: P ROG R A MO W A N I E M A K R... strona 15 4. Makro w kolumnie H wypisuje zakupy z grupy rozrywka. 5. Makro w kolumnie G wypisuje bez powtórzeń wszystkie rodzaje zakupów. 6. Funkcja podaje dzień (datę), w którym po raz ostatni wydano na rozrywkę. Funkcję można użyć w formule w komórce arkusza pisząc: =ostatni_dzień_rozrywka(data)