Podstawy Visual Basic for Applications (cz. II)

Slides:



Advertisements
Podobne prezentacje
Finanse publiczne w Polsce w okresie kryzysu
Advertisements

Finanse publiczne w Polsce w okresie kryzysu
STRUKTURY DANYCH.
Podstawy programowania w VBA
Finanse publiczne w Polsce w okresie kryzysu
Funkcje c.d. Strukturalność. Algorytmy. Ćwiczenia przed kolokwium.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
Funkcje wyszukiwania i odwołań
Jan Aleksander Wierzbicki
Budżet 2007 – krok wstecz. Budżet państwa 2007 Rezygnacja z naprawy finansów publicznych Brak wykorzystania dobrej koniunktury do zmniejszenia deficytu.
27/09/ Języki programowania 1 Piotr Górczyński Zmienne.
27/09/ Języki programowania 1 Piotr Górczyński Procedury i funkcje.
ZŁOŻONOŚĆ OBLICZENIOWA
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Kurs Pascala – spis treści
Programowanie w języku Visual Basic
Arkusz kalkulacyjny powtórzenie A.Ś..
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski
Ogólne jednostki programowe 1
Programowanie obiektowe. Obiekty. Metody. Właściwości.
Wstęp do programowania obiektowego
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
Podprogramy.
Metody Matematyczne w Inżynierii Chemicznej Wprowadzenie do laboratorium.
Schemat Hornera Mgr inż. Michał Szucki.
Funkcje w VBA.
Pierwsze programy.
Wyrażenia w Turbo Pascalu.
Procedury i funkcje.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Excel – Visual Basic for Applications Zadania dodatkowe
C# Platforma .NET CZ.3 Kuba Ostrowski.
Instrukcja warunkowa i wyboru
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Wstęp do makr 2 XII 2013.
MOiPP Wykład 3 Matlab Przykłady prostych metod obliczeniowych.
Współpraca z innymi aplikacjami. Organizacja informacji 10 XII 2013.
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Zajęcia I Organizacja zajęć Rejestracja i uruchamianie makr
Visual Basic Scritpts.
Wyższa Szkoła Ekologii i Zarządzania Informatyka Arkusz kalkulacyjny Excel dla WINDOWS cz.6.
Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
PHP Instrukcja warunkowa if Damian Urbańczyk. Warunek? Instrukcję warunkową wykorzystujemy wtedy, gdy chcemy sprawdzić pewien fakt, który może być prawdziwy.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Pętle – instrukcje powtórzeń
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Pakiety numeryczne Graphical User Interface Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania.
Wstawianie funkcji i formatowanie tabel w Excelu FORMATOWANIE TABEL, ORAZ FORMATOWANIE WARUNKOWE.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Visual Basic Patryk Rosiak. Visual Basic for Applications Jest uproszczoną wersją języka Visual Basic służącym do obsługi dokumentów w pakiecie Microsoft.
Najczęściej używane funkcje znajdziemy na rozwijanej liście Niedawno używane.
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
Lua - wprowadzenie ● lua.org – źródła, dokumentacja, podręcznik itp ● Interpreter - Lua.org->Downloads->Binaries->get a binary-> Windows->Wersja >Executables->
VBA w Excel.
Kurs Access.
Lua - funkcje Możliwość zwracania wielu wartości: function sumdiff(f,s) return f+s,f-s end a=20 b=15 s,d=sumdiff(a,b) print("Suma liczb "..a.."
Visual Basic for Applications
Visual Basic w programie Microsoft Excel
Instrukcja warunkowa if
Excel Informacje różne.
Zapis prezentacji:

Podstawy Visual Basic for Applications (cz. II) 16 XII

Podstawy Visual Basic for Applications (cz. II) Podstawy Visual Basic for Applications (cz. II). Tworzenie własnych aplikacji Podstawy Visual Basic for Applications (cz. II) • tworzenie i wykorzystywanie własnych funkcji arkusza • przekazywanie argumentów przez zmienne • obsługa błędów • manipulowanie obiektami z poziomu VBA Tworzenie własnych aplikacji • tworzenie okien dialogowych • procedury zdarzeń • automatyczne importowanie, uzupełnianie danych

Funkcje niestandardowe Aby skrócić i uprościć formuły, można za pomocą edytora VBA tworzyć własne funkcje Funkcja: może zwracać tylko wartość nie może przeprowadzać żadnych operacji na obiektach nie może zmieniać zawartości arkusza

wynik sektora GG (po uwzględnieniu kosztów reformy emerytalnej) w t-1 < -3% PKB? Początek Koniec tak nie korekta -2 p.p. państwowy dług publiczny w t-1 > 55% PKB? tak korekta -1,5 p.p. nie nie państwowy dług publiczny w t-1 > 50% PKB? złe czasy? tak brak korekty w t+1 tak nie skumulowane odchylenia wyniku GG od celu? złe czasy? < -6% PKB > +6% PKB od -6% do +6% PKB nie dobre czasy? tak tak nie bonus +1,5 p.p. brak korekty w t+1 korekta -1,5 p.p.

Własna funkcja: korekta SRW Function Korekta(Wynik, Dlug, Suma_roznic, Dynamika_PKB, Srednia_PKB) 'Podaje wielkość korekty zgodnie ze stabilizującą regułą wydatkową If (Wynik < -0.03 Or Dlug > 0.55) Then Korekta = -0.02 ElseIf (Dlug > 0.5 Or Suma_roznic < -0.06) Then If (Dynamika_PKB - Srednia_PKB) >= -0.02 Then Korekta = -0.015 Else Korekta = 0 End If ElseIf Suma_roznic > 0.06 Then If (Dynamika_PKB - Srednia_PKB) <= 0.02 Then Korekta = 0.015 End Function

Elementy funkcji [Public | Private] Function nazwa ([lista_argumentow]) [As typ] [instrukcje] [Exit Function] [nazwa = wyrażenie] End Function Public – funkcja osiągalna dla wszystkich innych procedur zawartych we wszystkich modułach w skoroszycie Private – funkcja osiąalna wyłącznie dla procedur znajdujących się w tym samym module Nazwa może zawierać litery, cyfry i niektóre znaki interpunkcyjne (bez spacji, kropek, $, %, !, #, &), pierwszy znak musi być literą Exit function – natychmiastowe wyjście z funkcji Po zakończeniu funkcja zwraca wynik przypisany do nazwy

Przekazywanie argumentów przez zmienne Sub LiczbaLiter() Dim i As Integer Dim n As Integer i = Len(InputBox("Wpisz swoje imię:")) n = Len(InputBox("Wpisz swoje nazwisko:")) MsgBox WszystkoRazem(i, n) End Sub Function WszystkoRazem(i, n) As Integer WszystkoRazem = i + n End Function

Przekazywanie argumentów – rola ByVal Sub LiczbaLiter() Dim i As Integer Dim n As Integer i = Len(InputBox("Wpisz swoje imię:")) n = Len(InputBox("Wpisz swoje nazwisko:")) MsgBox WszystkoRazem(i, n) MsgBox (i) MsgBox (n) End Sub Function WszystkoRazem(ByVal i, n) As Integer WszystkoRazem = i + n i = i + 10 n = n + 10 End Function

Argumenty opcjonalne Sub LiczbaLiter() Dim i As Integer Dim n As Integer i = Len(InputBox("Wpisz swoje pierwsze imię:")) j = Len(InputBox("Wpisz ewentualnie swoje drugie imię:")) n = Len(InputBox("Wpisz swoje nazwisko:")) MsgBox WszystkoRazem(i, n) MsgBox (i) MsgBox (n) End Sub Function WszystkoRazem(ByVal i, n, Optional j) As Integer If IsMissing(j) Then WszystkoRazem = i + n Else WszystkoRazem = i + n + j End If i = i + 10 n = n + 10 End Function

Rodzaje błędów Błąd synktatyczny – występuje w chwili pisania kodu, Excel automatycznie wyszukuje błędy i stara się pomóc (patrz alt+F11/Tools/Options/Editor) Błąd wykonania – występuje w chwili wykonania procedury, np. odwołanie do nieistniejącego pliku lub obiektu w bieżącym arkuszu Błąd logiczny – wszystko się wykonuje, nie ma żadnych komunikatów o błędzie, ale rezultat procedury nie jest poprawny

Jak sprawdzić poprawność kodu? Można sprawdzać kod krok po kroku, czyli linijka po linijce (Debug/Step into albo F8) Można wykonywać kod do miejsca określonego kursorem (Debug/ Run to cursor albo ctrl+F8) Można wstawić w danym miejscu tzw. punkt przerwania (Debug/Toggle Breakpoint albo F9), jeśli podejrzewa się, że w danej linijce jest błąd Można wstawić czujkę, która obserwuje na bieżąco wartość danej zmiennej (Debug/Add Watch albo shift+F9) lub okno zmienne lokalne (View/Locals Window) Można zatrzymać program poprzez: Ctrl+Break Ustawienie punktów przerwania Wpisanie instrukcji stop Ustawienie czujek (przerywa, gdy spełnione są zdefiniowane warunki)

Co zrobić po wychwyceniu błędu? Sposób I Sub Iloraz() Dim a As Single Dim b As Single Dim c As Single a = InputBox("Wpisz dzielną:") b = InputBox("Wpisz dzielnik:") On Error GoTo Uwaga c = a / b MsgBox (a / b) Exit Sub Uwaga: MsgBox ("Pamiętaj użytkowniku, nie dziel przez zero!") End Sub

Co zrobić po wychwyceniu błędu? Sposób nr 2 Sub Iloraz1() Dim a As Single Dim b As Single Dim c As Single a = InputBox("Wpisz dzielną:") b = InputBox("Wpisz dzielnik:") On Error Resume Next c = a / b If Err = 0 Then MsgBox (CStr(a) + " / " + CStr(b) + " = " + CStr(a / b)) Else MsgBox ("Pamiętaj użytkowniku, nie dziel przez zero!") End If On Error GoTo 0 End Sub

Okno wprowadzania danych Przykładowe okno dialogowe to okno wprowadzania danych (Input Box), służące do wprowadzania: tekstu, liczb lub zakresu Oprócz komunikatu, okno może zawierać: tytuł, wartość domyślną, współrzędne położenia typ danych zwracanej wartości

Okno wprowadzania danych - przykład Sub Iloraz2() Dim a As Single Dim b As Single Dim c As Single a = InputBox("Wpisz dzielną:", "Program Iloraz", "250416") b = InputBox("Wpisz dzielnik:", "Program Iloraz", "376") On Error Resume Next c = a / b If Err = 0 Then MsgBox (CStr(a) + " / " + CStr(b) + " = " + CStr(a / b)) Else MsgBox ("Pamiętaj użytkowniku, nie dziel przez zero!") End If On Error GoTo 0 End Sub

Okno komunikatu Okno komunikatu (MsgBox) wyświetla komunikat lub pobiera prostą odpowiedź od użytkownika Podczas zajęć korzystaliśmy z tego okna wielokrotnie, lecz bez tytułu i przycisków Można określić, które przyciski pojawią się na oknie (patrz slajd 17) Następnie można pobrać odpowiedź użytkownika (patrz slajd 18)

Stałe odpowiadające przyciskom obsługiwanym przez funkcję MsgBox Stała Wartość Opis vbOKOnly Wyświetl tylko przycisk OK. VbOKCancel 1 Wyświetl przycisk OK i Anuluj. VbAbortRetrylgnore 2 Wyświetl przycisk Przerwij, Ponów i Ignoruj. VbYesNoCancel 3 Wyświetl przyciski Tak, Nie i Anuluj. VbYesNo 4 Wyświetl przycisk Tak i Nie. VbRetryCancel 5 Wyświetl przyciski Ponów i Anuluj. VbCritical 16 Wyświetl ikonę Komunikat krytyczny. VbQuestion 32 Wyświetl ikonę Pytanie ostrzegawcze. VbExclamation 48 Wyświetl ikonę Komunikat ostrzegawczy. VbInformation 64 Wyświetl ikonę Komunikat informacyjny. VbDefaultButton1 Domyślny jest przycisk pierwszy. VbDefaultButton2 256 Domyślny jest przycisk drugi. VbDefaultButton3 512 Domyślny jest przycisk trzeci. VbDefaultButton4 768 Domyślnym przycisk jest przycisk czwarty. VbSystemModal 4096 Okno modalne w systemie; działanie wszystkich aplikacji zostanie wstrzymane, dopóki użytkownik nie odpowie na wyświetlony komunikat. (Może nie działać w każdej sytuacji).

Wartości zwracane przez funkcję MsgBox Stała Wartość Opis vbOK 1 Naciśnięto przycisk OK. vbCancel 2 Naciśnięto przycisk Anuluj. vbAbort 3 Naciśnięto przycisk Przerwij. vbRetry 4 Naciśnięto przycisk Ponów. vbIgnore 5 Naciśnięto przycisk Ignoruj. vbYes 6 Naciśnięto przycisk Tak. vbNo 7 Naciśnięto przycisk Nie.

Okno komunikatu - przykład Sub Iloraz3() Dim a As Single Dim b As Single Dim c As Single a = InputBox("Wpisz dzielną:", "Program Iloraz", "250416") b = InputBox("Wpisz dzielnik:", "Program Iloraz", "376") On Error Resume Next c = a / b If Err = 0 Then MsgBox (CStr(a) + " / " + CStr(b) + " = " + CStr(a / b)) Else Ans = MsgBox("Czy będziesz pamiętał(-a) Szanowny(-a) Użytkowniku(-czko), żeby nie dzielić przez zero?", vbYesNo + vbQuestion + vbDefaultButton2) Select Case Ans Case vbYes Iloraz3 Case No Exit Sub End Select End If On Error GoTo 0 End Sub

Ćwiczenie – projektowanie własnego okna dialogowego i procedur zdarzeń Zadanie polega na utworzeniu formularza, który będzie zawierał: - listę makr - przycisk wykonujący zaznaczone makro - kontrolkę edycji zakresu komórek - pole wyboru określające, czy wypełnienie zakresu ma być jasne czy nie - trzy przyciski opcji określające kolor wypełnienia - przycisk przełączający wypełnienie zakresu lub jego brak

Ćwiczenie - ściągawka Obiekt Name Caption/Text UserForm usfCwiczeniowy ListBox lstLista CommandButton cmdWykonaj Wykonaj Makro RefEdit refZakres a1 Frame frmWypelnienie Jakie wypełnienie? frmKolor Jaki kolor? CheckBox chkJasne jasne OptionButton OptionButton1 żółty OptionButton2 czerwony OptionButton3 niebieski ToggleButton tglWypelnienie Wypełnienie zakresu

Procedura zdarzeń Initialize() Private Sub UserForm_Initialize() With lstLista .AddItem "Iloraz" .AddItem "Iloraz1" .AddItem "Iloraz2" .AddItem "Iloraz3" .AddItem "LiczbaLiter" End With OptionButton1.Value = True End Sub

Procedura zdarzeń Click() Private Sub cmdWykonaj_Click() Select Case lstLista.ListIndex Case -1 MsgBox "Wybierz makro z listy" Exit Sub Case 0: Call Iloraz Case 1: Call Iloraz1 Case 2: Call Iloraz2 Case 3: Call Iloraz3 Case 4: Call LiczbaLiter End Select End Sub

Procedury zdarzeń AfterUpdate() i Change() Private Sub tglWypelnienie_AfterUpdate() Call Wypelnienie End Sub Private Sub OptionButton1_Change() Private Sub OptionButton2_Change() Private Sub OptionButton3_Change() Private Sub chkJasne_Change()

Procedura zmieniająca wypełnienie komórki If OptionButton1.Value = True Then .ColorIndex = 6 ElseIf OptionButton2.Value = True Then .ColorIndex = 3 Else .ColorIndex = 5 End If .TintAndShade = 0 .PatternTintAndShade = 0 End With With Range(refZakres.Text).Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ColorIndex = 0 End Sub Private Sub Wypelnienie() If tglWypelnienie.Value = True Then With Range(refZakres.Text).Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic If chkJasne.Value = True Then If OptionButton1.Value = True Then .ColorIndex = 19 ElseIf OptionButton2.Value = True Then .ColorIndex = 22 Else .ColorIndex = 23 End If

Uzupełnianie danych po imporcie z internetu Zarejestrujmy makro polegające na pobraniu danych z internetu (Dane/Z sieci Web) Dodajmy w makrze przejście do właściwej komórki za pomocą instrukcji: Range(„A1”).Select Selection.End(xlDown).Select Cells(ActiveCell.Row + 1, 1).Select Wklejmy wektor bieżących danych za pomocą Możemy usunąć zakres skojarzony z kwerendą internetową