Wstęp do makr

Post on 24-Feb-2016

55 views 0 download

description

Wstęp do makr. 2 XII 2013. Wstęp do makr. środowiska pracy programisty VBA bezpieczeństwo – poziom zabezpieczeń tworzenie makr przy pomocy nagrywania przypiswanie makr do przycisków i paska „szybki dostęp”. Co można uzyskać dzięki językowi VBA?. - PowerPoint PPT Presentation

Transcript of Wstęp do makr

Wstęp do makr

26 XI 2014

• środowiska pracy programisty VBA• bezpieczeństwo – poziom zabezpieczeń• tworzenie makr przy pomocy nagrywania• przypiswanie makr do przycisków i paska

„szybki dostęp”

Wstęp do makr

Co można uzyskać dzięki językowi VBA?

• Automatyzacja czynności, które wykonujemy w regularnych odstępach czasu (np. aktualizacja Monitora Konwergencji) albo wielokrotnie (ta sama operacja w wielu wierszach lub arkuszach)

• Własne funkcje• Własne interfejsy służące do wprowadzania danych i

prezentacji wyników

Jak wyświetlić kartę Deweloper?Plik / Informacje / Dostosowywanie wstążki / Deweloper

Jak utworzyć makro?• Poprzez rejestrację• Poprzez napisanie kodu źródłowego w module Visual Basic

Karta Deweloper

Bezpieczeństwo makr

• Plik• Opcje programu Excel• Centrum zaufania• Ustawienia centrum zaufania

– Ustawienia makr– Zaufane lokalizacje (dodaj nową lokalizację)

Ćwiczenie: przykładowe makro• Wpisz dowolną liczbę w dowolną komórkę• Deweloper/Użyj odwołań względnych lub bezwzględnych• Deweloper/Zarejestruj makro• Nazwij makro (brak odstępów), nadaj skrót, dodaj komentarz• Jeśli chcesz używać makra we wszystkich skoroszytach, zapisz

je w skoroszycie makr osobistych• Po naciśnięciu OK, wciśnij ctrl+c• Przejdź do drugiego arkusza i wciśnij ctrl+v• Zatrzymaj rejestrowanie makra• Zarejestrowałeś/-aś pierwsze makro! • Możesz teraz wypróbować, jak działa za pomocą przypisanego

uprzednio skrótu

Ćwiczenie – ciąg dalszy• Przejrzyj zarejestrowane makro: Alt+F11 lub Deweloper/Visual Basic lub

Deweloper/makra/edycja

Sub Przeklej()'' Przeklej Makro <- KOMENTARZE SĄ IGNOROWANE PRZEZ KOMPILATORA' Wkleja zawartość komórki do drugiego arkusza'' Klawisz skrótu: Ctrl+i' Selection.Copy ' Kopiuj Sheets("Arkusz2").Select ' Wybierz Arkusz2 ActiveSheet.Paste ' WklejEnd Sub

• Zmień powyższy kod procedury tak, aby zawartość komórki źródłowej była wklejana do komórki wynikowej położonej w tym samym miejscu, co komórka źródłowa (choć w innym arkuszu)

• Skorzystaj z następujących linijek:

Dim adres As String ' Deklarowanie zmiennejadres = ActiveCell.Address ' Przypisanie adresu do zmiennejRange(adres).Select ' Wybór komórki o uprzednio zapisanym adresie

Jak przypisać makro do przycisku?• Deweloper/Wstaw/Formanty formularza/Przycisk

• Wybierz makro, które chcesz przypisać i naciśnij OK.• Jeśli chcesz zmienić etykietę (napis) na przycisku, naciśnij

prawym klawiszem myszy na przycisk, a potem „edytuj tekst”

Jak przypisać makro do paska „Szybki dostęp”?

• Kliknij na wstążkę prawym klawiszem myszy• Dostosuj pasek narzędzi „Szybki dostęp”

• Wybierz polecenia z: Makra• Zaznacz makro, które chcesz dodać, dodaj i naciśnij OK

Podstawy Visual Basic for Applications (cz. I)

• główne elementy okna edytora VBA (eksplorator projektu, właściwości, kod programu, formularz)

• zasady tworzenia procedur• zmienne – definiowanie i ich cechy• definicja pojęć: obiekt, atrybut (właściwość),

metoda, argument, kolekcja• sterowanie przebiegiem programu: konstrukcje

warunkowe i pętle

Okno Edytor projektu VB• Skrót Atl+F11 lub Deweloper/Visual Basic

Pasek menuPasek narzędziowy

Okno Eksplorator projektu

Okno kodu

Okno bezpośrednich instrukcji

Okno właściwości

Okno Eksplorator projektu• Dojście na skróty: (alt+F11) ctrl+r • Zawiera trzy przyciski:

– Pokaż kod– Pokaż obiekt– Przełącz foldery

• Wyświetla hierarchiczną listę aktualnie otwartych projektów oraz zawartych w nich elementów, m.in.:

• Arkusze• Wykresy• ThisWorkbook (skoroszyt)• Moduły (w tym klasy)• Formularze (UserForm)• Odwołania do innych projektów

Standardowy pasek narzędzi VB

Pokaż Microsoft

Excel

Uruchom procedurę

Sub

Wstaw UserForm Zresetuj

Tryb projekto-

waniaPrzerwij

Wiersz i kolumna w oknie kodu

Przybornik

Przeglądarka obiektów

Okno właściwości

Eksplorator projektu

Okno właściwości• Dojście na skróty: (alt+F11) F4• Służy do przeglądania i

ustawiania właściwości zaznaczonego obiektu, np. formularza, projektu lub modułu

• Właściwości przeglądamy alfabetycznie lub według kategorii

Okno Formularz• Umożliwia tworzenie

okien dialogowych• Do rysowania

formantów służą przyciski (kontrolki) przybornika (toolbox)

• Do ustawiania właściwości formantów służy okno właściwości

Ćwiczenie: projektujemy formularzObiekt Name Caption/Text Inne

USERFORM usfRegula SRW

FRAME frmRamka Stabilizująca reguła wydatkowa

LABEL lblKwota_1 Kwota wydatków w roku n-1

LABEL lblKwota_wynik BorderStyle 1

TEXTBOX txtKwota_1 600000000

TEXTBOX txtKorektaCPI 1

TEXTBOX txtPrognozaCPI 1,025

TEXTBOX txtSredniPKB 1,03

TEXTBOX txtKorekta -0,02

BUTTON cmdOblicz Oblicz

BUTTON cmdZakoncz Zakończ

Okno Kod programu• Dojście na skróty: (alt+F11) F7 lub • nacisnąć prawym przyciskiem myszy na

dany formularz / moduł, a następnie „view code”

• Służy do wpisywania, przeglądania i edytowania kodu

• U samej góry okna – dwa rozwijane pola listy (obiekt i procedury), dzięki którym można szybko poruszać się w obrębie programu

• Prawe ramię gwiazdki wskazuje linię podziału okna

• W lewym dolnym rogu znajdują się ikonki o nazwie widok i pełny widok modułu

Procedury: Sub i Function

• Procedura Sub (zwykła)– wykonuje określone zadania, – nie zwraca jawnie żadnych wartości,– zaczyna się Sub, a kończy End Sub– Private Sub zabezpiecza przed wykorzystaniem

procedur z innych formularzy• Procedura Function (funkcja)

– wykonuje określone zadania,– zwraca pojedynczą wartość,– Zaczyna się Function, a kończy End Function

Jak pisać kod procedury w VB?

• Z klawiatury / edytować zarejestrowane makra / kopiować kod z innego modułu

• Wcięcia wiersza za pomocą tab (szczególnie przy pętlach i warunkach logicznych)

• Łamanie wierszy za pomocą podkreślnika _• Generalnie wielkość liter nie ma znaczenia• Cofamy operację za pomocą ctrl+z• Zapisujemy za pomocą ctrl+s, jeśli skoroszyt posiada

makro, to rozszerzenie .xlsm

Ćwiczenie: piszemy programOption Explicit ‘To polecenie wymusza deklarację zmiennychDim Kwota_wynik As Single ‘Deklarujemy zmienneDim Kwota_1 As SingleDim KorektaCPI As SingleDim PrognozaCPI As SingleDim SredniPKB As SingleDim Korekta As Single

Private Sub cmdOblicz_Click()'Procedura oblicza kwotę wydatków na rok nKwota_1 = txtKwota_1.ValueKorektaCPI = txtKorektaCPI.ValuePrognozaCPI = txtPrognozaCPI.ValueSredniPKB = txtSredniPKB.ValueKorekta = txtKorekta.ValueKwota_wynik = Kwota_1 * KorektaCPI * PrognozaCPI * (SredniPKB + Korekta)lblKwota_wynik = Kwota_wynikEnd Sub

Private Sub cmdZakoncz_Click()Unload MeEnd Sub

Typy danych w Visual BasicTyp danych Wielkość (w bajtach) Charakterystyka (zakres)Boolean 2 Wartość logiczna PRAWDA / FAŁSZByte 1 Mała liczba całkowita od 0 do 255Integer 2 Liczba całkowita od -32768 do 32767Long 4 Liczba całkowita długa (miliardy) -2147483648

do 2147483648Single 4 Liczba rzeczywista od -3,402823E38 do

1,401298E45Double 8 Liczba rzeczywista dwukrotnie większa od liczby

Single (E-324 do E308)Currency 8 Liczba całkowita z 4 miejscami po przecinkuDecimal 14 Duże liczby zapisywane w systemie dziesiętnymDate 8 Data w przedziale 1/1/100 do 31/12/9999String Długość ciągu znaków Łańcuch znaków od 0 do 65535 znakówObject 4 Umożliwa dostęp do któregokolwiek obiektu,

rozpoznawanego przez ExcelArray Zależy od wielkości tablicy

Definicje

• Obiekt – element manipulowany przy użyciu VBA, np. zakresy, wykresy, rysunki itp.

• Atrybut/właściwość/własność – określona cecha obiektu, np. pole tekstowe ma czcionkę, tekst, rodzaj ramki, nazwę itp.

• Metoda – operacja powiązana z obiektem, np. metoda Show służy do pokazania (usfRegula.Show)

• Argument – dane konieczne do tego, aby dana procedura mogła działać

• Kolekcja – zbiór podobnych obiektów, np. kolekcja Sheets (zawiera arkusze i wykresy), kolekcja Workbooks, kolekcja Worksheets

Konstrukcje warunkowe (cz. I): IF, THEN, ELSE• If warunek Then instrukcja

Np. If (PrognozaCPI > 1.05 And SredniPKB > 1.04) Or PrognozaCPI <= 1 Then MsgBox ("Zła prognoza")

• If warunek Then[instrukcje]

End If

• If warunek Then Instrukcje1 Else Instrukcje2

• If warunek1 Then[instrukcje, gdy warunek1 jest prawdą]

ElseIf warunek2 Then[instrukcje2, gdy warunek2 jest prawdą]

ElseIf warunek3 Then[instrukcje3, gdy warunek3 jest prawdą] …

Else[instrukcje, gdy wszystkie warunki są fałszywe] …

End If

Konstrukcje warunkowe (cz. II): SELECT CASE

Select Case wyrażenieCase wartość1

Instrukcje, gdy wartość1 równa się wyrażeniuCase wartość2

Instrukcje, gdy wartość2 równa się wyrażeniuCase wartość3

Instrukcje, gdy wartość3 równa się wyrażeniu …End Select

Pętle UNTIL, WHILE i FOR

DoIf warunek Then Exit Do[instrukcje]

Loop

Do Until warunek [instrukcje]

Loop

Do While warunek [instrukcje]

Loop

Do [instrukcje]

Loop While warunek

For licznik=start To Stop If warunek Then Exit For [instrukcje]

Next licznik

For Each element In Grupa [instrukcje]

Next element

27

Pętle – ćwiczenie (cz. I)

utrzymywanie wyniku sektora GG na odpowiednim poziomie w stosunku do wzrostu gospodarczego w danym kraju pozwala na stopniowe obniżanie relacji długu do PKB zgodnie z następującym wzorem:

gdzie:d* - relacja długu do PKB w długim okresieb – wynik w relacji do PKBg – wzrost nominalnego PKB

Np.

cel dla wyniku

sektora GG (w % PKB)

tempo wzrostu

nominalnego PKB

poziom długu w długim

okresie (w % PKB)

-1% 6,5% 16%-1% 5,5% 19%

-1% 4,5% 23%-1% 3,5% 30%

-1% 2,5% 41%

-0,5% 6,5% 8%

-0,5% 5,5% 10%

-0,5% 4,5% 12%

-0,5% 3,5% 15%

-0,5% 2,5% 21%

g)·(1 gbd*

0,160,065)·(1 0,065

0,01

Pętle – ćwiczenie (cz. II)

• Zapisz program, który poda wskaźnik długu GG do PKB w długim okresie w zależności od wyniku sektora GG i średniookresowego wzrostu nominalnego PKB

Sub Przycisk1_Kliknięcie()Dim d As SingleDim b As SingleDim g As Single

For g = 2 To 6Cells(1, g) = g

For b = -3 To 1Cells(b + 5, 1) = b

Cells(b + 5, g) = (-b / g) * (1 + g / 100) NextNextEnd Sub

Okno Instrukcje bezpośrednie

• Dojście na skróty (alt+F11) ctrl+g• Dzięki temu oknu można przećwiczyć różne funkcje i instrukcje• Po wpisaniu instrukcji, Excel poda wynik• Wypróbuj:

– Worksheets("Arkusz2").Activate– Range("B2:B5").Select– [B2:B5].Value = 13– ?Range("B5")– Selection.ClearContents– ?2+2– ?Selection.Address– ?Selection.Rows.Count– ?ActiveWorkbook.Name