Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Podobné dokumenty
Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

DUM 06 téma: Tvorba makra pomocí VBA

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

8 Makra Příklad 4 Excel 2007

Visual Basic for Applications

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

MS Excel makra a VBA

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Skripty základy VB, vestavěné objekty, příklady

10 Algoritmizace Příklad 2 Word 2007/ VBA

LEKCE 6. Operátory. V této lekci najdete:

Tabulkový procesor. Základní rysy

Makra. Orámování oblasti

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Visual Basic for Application

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

PHP tutoriál (základy PHP snadno a rychle)

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

OBSAH Úvod do VBA... 6 K čemu VBA... 6 Když VBA nestačí... 6 Historie Visual Basicu... 7 Objektový model, vlastnosti, metody, události a funkce...

VISUAL BASIC. Práce se soubory

Stručný návod k programu Octave

JAK PROPOJIT R-KO a EXCEL aneb Aby se uživatel nasytil a statistik zůstal celý

ZÁKLADY PROGRAMOVÁNÍ & ALGORITMIZACE VE VBA

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Hromadná změna datumu a času v buňkách

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

V této aplikaci si ukážeme jakým způsobem zobrazovat čas a datum. Pro ovládání zobrazení času a datumu se naučíme využívat nabídku.

Makro. PDF vytvořeno zkušební verzí pdffactory Pro

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Programujeme v softwaru Statistica

Programovací jazyk Pascal

Odstavení automatického zpracování hypertextových odkazů

1. D Y N A M I C K É DAT O V É STRUKTUR Y

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Programujeme v softwaru Statistica

Algoritmizace a programování

ANOTACE vytvořených/inovovaných materiálů

Microsoft Office Excel - makra. Automatizace práce v MS Excel. Autor: Jaroslav Nedoma

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Inovace bakalářského studijního oboru Aplikovaná chemie

Tematický celek 03 - Cvičné příklady

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Spojování textových řetězců na listu

'============================================================== Data\Priklady\04_Zpracovani_dat\ ' Název souboru 04_01_Comparison.

ExcelVBAmodul. Podpora pro výměnu dat automatů MICROPEL s aplikací Microsoft Excel

DATABÁZE ACCESS Ovládací prvky ve formuláři 5 TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY.

Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou...

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Výčtový typ strana 67

PODPROGRAMY PROCEDURY A FUNKCE

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Programujeme v softwaru Statistica - příklady

Tabulka obsluhovaná kódem VBA

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

MAXScript výukový kurz

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

8 Třídy, objekty, metody, předávání argumentů metod

NADSTAVBOVÝ MODUL MOHSA V1

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Jak vložit obrázek do oblasti buněk

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Empty, Null, Nothing, Missing, prázdný řetězec a buňka

9 Úprava maker Příklad 4 Word 2007/ VBA

Odstranění řádků (na základě hodnoty)

Programování v jazyce JavaScript

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Objektově orientované programování

Excel - databáze. Opakování. Soubor, který jsme upravovali. Upravený soubor. Hrubá mzda = počet kusů * Kč za kus B6=B4*B5

PSK3-9. Základy skriptování. Hlavička

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

KAPITOLA 10. Vytváření funkcí

Poslední nenulová číslice faktoriálu

Slíbená princezna. Univerzální ComboBox

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Informační a komunikační technologie pro učební obory ME4 a SE4. Makra

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Algoritmizace a programování

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

Cvičné příklady Hodina 8 Cvičný 1

Úvod do programování. Lekce 1

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Transkript:

Skripta ke školení Základy VBA vypracoval: Tomáš Herout e-mail: herout@helpmark.cz tel: 739 719 548 2016

Obsah TROCHA TEORIE VBA...2 ZPŮSOB ZÁPISU VE VBA...2 CO JE TO FUNKCE...2 CO JE TO PROCEDURA...2 ZÁKLADNÍ STAVEBNÍ KAMENY VBA...3 PROMĚNNÉ...3 POLE...4 KŘIŽOVATKY (PODMÍNKY)...4 IF...4 IIf...5 Select Case...5 CYKLY...5 For...5 For Each...6 OPERACE S VBA...7 NAČÍTÁNÍ HODNOT Z TABULEK A VKLÁDÁNO DO TABULEK...7 MsgBox...7 Range(AdresaBunky)...7 SLEDOVÁNÍ UDÁLOSTÍ...7 2016 Tomáš Herout 1

Zkratka VBA znamená Visual Basic for Application. Většinou se používá k: Trocha teorie VBA 1. Opakování stále stejných operací, kdy se dá při první operaci spustit nahrávání makra, a toto makro pomocí jazyka VBA zaznamenává operace. Kdykoli se pak dá spustit a provede totéž 2. Pro práci s formuláři, kdy uživatel může data vkládat do formuláře a až formulář vytvoří strukturu dat 3. Za účelem automatické tvorby grafů 4. Práce se soubory 5. K vytváření vlastních funkcí nad rámec funkcí, které jsou v Excelu integrovány Způsob zápisu ve VBA 1. VBA nerozlišuje velikost písmen 2. Příkaz se ukončuje tím, že začnete psát na nový řádek (ne středníkem). V případě, že si budete chtít kód zpřehlednit zalomením na nový řádek, musíte použít podtržítko 3. Používá tzv. tečkovou notaci. Představte si ji jako: cesko.praha Co je to funkce Funkce je kus obaleného kódu, kterému dáme název. Díky tomu názvu ji můžeme opakovaně používat kdykoli to budeme potřebovat. Bude stačit tu funkci jen zavolat a sdělit jí, co po ní chceme. Tomu předávání informací obsahující to, co po funkci chceme, se odborní říká argumenty. Při volání funkce se argumenty zapisují do závorek. Některé funkce mohou přebírat více argumentů. Jeden argument od druhého se uvnitř závorek odděluje pomocí středníků. Funkce nám vrací nějakou hodnotu. Třeba číslo, zda je to pravda apod. Ukázka zavolání funkce: =NAZEVFUNKCE(argument-jedna; argument-dva; ) Ukázka vytvoření funkce: Function NazevFunkce(argument) nějaký kód End Function Co je to procedura Je to také obalený kód, který se spustí, když ho potřebujeme, ale nevrací žádnou hodnotu. Ukázka zápisu procedury: Sub Nazev() nějaký kód End Sub 2016 Tomáš Herout 2

Základní stavební kameny VBA Proměnné Proměnné se používají vždy, pokud má kód pracovat s nějakými daty (třeba čísli) vloženými uživatele. Používají se v praxi i k mnoha dalším věcem. Například ke zpřehlednění kódu. U VBA je třeba nejprve určit druh proměnné, než ji v reálu použijete. Příklad: Dim NazevPromenne As Integer NazevPromenne = 1 Platnost proměnné Název Dim Private Public Static Popis Platí jen dočasně po dobu, kdy se vykonává kód procedury Dočasná, ale je vidět ve více procedurách v jednom modulu Zachová si platnost i po skončení operací Je neměnná (když k ní něco přičtete, tak zůstane stejná) Datové typy Název Popis Integer Menší čísla od -32 768 do 32 767 Long Větší čísla od -2 147 483 648 do 2 147 483 647 Single Desetinná místa 6 míst (např. 0,654321) Double Decimal Desetinná místa 12 míst Desetinná místa 28 míst Date Datum např. 1. 1. 2001 String Boolean Variant Textový řetězec Pravdivostní (pravda / nepravda) Ostatní proměnné, třeba Error 2016 Tomáš Herout 3

Pole Pole jsou něco podobného, jako proměnné. Rozdíl je v tom, že v jednom poli může být více proměnných. Každá z proměnných uvnitř pole má své číslo (index). Pozor, čísla začínají nulou. Tedy např: Dim Pole(3) As Variant Pole(0) = "Muž" Pole(1) = "Žena" Pole(2) = "neurčeno" MsgBox Pole(0) & " " & Pole(1) & " " & Pole(2) IF Křižovatky (podmínky) Už název napovídá, že se jedná o podmínku. Pokud je podmínka splněna (je pravda), tak se vykoná kód umístěný v podmínce. Příklad zápisu: If x > 0 Then MsgBox x "> 0" End If Může se stát případ, kdy budeme chtít něco vykonat i v případě, kdy podmínka platná nebude. K tomu nám slouží Else. Příklad: If x > 0 Then MsgBox x "> 0" Else MsgBox x "< nebo = 0" End If Můžeme také chtít ověřit více než jen jednu podmínku. Pak použijeme ElseIf. If x > 0 Then MsgBox x "> 0" ElseIf x = 0 MsgBox x " = 0" Else MsgBox x "< 0" End If Operátory používané u podmínek Operátor Popis > x větší než y < x menší než y >= x větší nebo rovno než y <= x menší nebo rovno než y = x rovná se y 2016 Tomáš Herout 4

<> x nerovná se y Like Is Porovnání řetězců Porovnání proměnných odkazující na objekty And Spojení podmínek, např.: x > 0 And x < 100 Or Buď jedno, nebo druhé x > 0 Or x < 0 IIf V jádru totéž, co If, ale jednodušší zápis. Ukázka: vstup = MsgBox("Chcete vstoupit?", vbyesno, "Vstup") MsgBox (iif(vstup = vbyes, "Vítejte a pokračujte", "Nashledanou")) Select Case Používá se ve stejných situacích, jako If a Elseif. Jeho použití je tam, kde je křižovatka s mnoha odbočkami. Select Case promenna Case pondělí MsgBox ("pondělí") Case úterý MsgBox ("úterý ") Case středa MsgBox ("středa ") End Select Cykly Cykly provádějí nějaký kód tak dlouho, dokud je to potřeba. Pokud např. chceme vypsat celé pole (více proměnných pod jedním názvem), můžeme použít cyklus. For Zde příklad: Dim Pole(3) As Variant Pole(0) = "Muž" Pole(1) = "Žena" Pole(2) = "neurčeno" Dim i As Integer Dim ii As Integer Dim bunka As Variant ii = 1 For i = 0 To UBound(Pole) bunka = "A" & ii Range(bunka) = Pole(i) ii = ii + 1 Next i 2016 Tomáš Herout 5

Popis příkladu: 1. řádek vytváří pole pojmenované jako Pole a definuje mu tři hodnoty 2. až 4. řádek vytváří hodnoty v polích 5. až 7. řádek vytváří proměnné 8. řádek definuje proměnnou ii, kterou použijeme pro vytváření dynamických adres buněk 9. řádek otevírá cyklus, stanovuje proměnnou i na hodnotu 0 a za To, vypíše počet opakování, který nejprve zjišťuje přes funkci UBound(Pole). 10. řádek vytváří proměnnou bunka, která se při každém cyklu bude měnit 11. řádek zajistí, že se při každém cyklu zvýší proměnná ii 12. řádek ukončuje cyklus a vrací ho na 9. řádek For Each Je přímo určen k procházení polí. Má kratší zápis: Dim Bun_hod As String For Each Bun In ActiveSheet.Range("A1:A5") Bun_hod = Bun_hod & vbnewline & Bun.Address & " - " & Bun.Value Next Bun MsgBox Bun_hod 2016 Tomáš Herout 6

Operace s VBA Načítání hodnot z tabulek a vkládáno do tabulek VBA samozřejmě musí umět pracovat s tabulkami Excelu, jinak by to nedávalo smysl. MsgBox Otevře okno nad Excelem a vypíše do něj libovolnou hodnotu, kterou chcete. Range(AdresaBunky) Pokud do závorek vložíte adresu buňky (třeba A1 ), tak tuto buňku označíte a budete s ní moci pracovat, třeba do ní zapsat nějakou hodnotu. Příklad: Range("A1") = "test" Pokud byste naopak chtěli načíst hodnotu z nějaké buňky a uložit ji do proměnné, tak by zápis mohl vypadat zase takto: Dim NacteniZBunky As Integer NacteniZBunky = Range("A1").Value Vysvětlení: První řádek jen definuje budoucí proměnnou. Udává, že bude vidět pouze v rámci procedury a pak zanikne (šetří se tím výkon). Jako druh je určené číslo. Druhý řádek ukládá do proměnné hodnotu z buňky A1. Získávat hodnoty můžeme pomocí více příkazů: 1. Value vrátí hodnotu, ale nemusí být zcela přesná (např. zaokrouhlená) 2. Value2 vrátí přesnější hodnotu. To se projevuje u data a měn 3. Text vrátí přesný obsah buňky Pokud bychom chtěli získat hodnotu z jiného listu, tak zde máte příklad: Dim NacteniZBunky As Integer NacteniZBunky = Worksheets("List1").Range("A1").Value Můžeme také chtít načíst buňku, která se nachází v jiném sešitě. V tom případě by to mohlo vypadat takto: Application.Workbooks.Open ("C:\adresar\sesit.xlsx") Dim x As Integer X = Workbooks("sesit.xlsx").Worksheets("List1").Range("A1").Value Sledování událostí Sledování událostí slouží k tomu, aby byl spuštěn nějaký kód (v proceduře) na základě nějaké události, jako je např. otevření sešitu. Private Sub Workbook_Open() MsgBox "Vítáme vás" End Sub 2016 Tomáš Herout 7