Visual Basic for Applications

Podobné dokumenty
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

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

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

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

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

Programovací jazyk Pascal

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

5. kapitola Spouštění aplikací Visual Basic.Net, spustitelné soubory

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracová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

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

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

VISUAL BASIC. Práce se soubory

DUM 06 téma: Tvorba makra pomocí VBA

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

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

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

Paměť počítače. alg2 1

Zápis programu v jazyce C#

Maturitní otázky z předmětu PROGRAMOVÁNÍ

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

Algoritmizace a programování

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

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

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

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...

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

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

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

Programy na PODMÍNĚNÝ příkaz IF a CASE

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

Poslední nenulová číslice faktoriálu

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Základy programovacího jazyka Turbo Pascal

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

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

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

PŘETĚŽOVÁNÍ OPERÁTORŮ

Programujeme v softwaru Statistica

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

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

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

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

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

Makra v OpenOffice.org Calc

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

VISUAL BASIC. Přehled témat

Programování v jazyce JavaScript

MS Excel makra a VBA

Sada 1 - Základy programování

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

Objektově orientované programování

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

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

Řízení toku programu Programátor musí být schopen nějak ovlivňovat běh programu a k tomu má několik možností:

Stručný návod k programu Octave

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

Makra. Orámování oblasti

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

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

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

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

NPRG030 Programování I, 2010/11

PROGRAMOVÁNÍ V SHELLU

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

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

1. Téma 03 - Rozhodování

Algoritmizace a programování

NPRG030 Programování I, 2016/17 1 / :58:13

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Jazyk C# a platforma.net

Textové, datumové a časové funkce

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

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

K8055D.DLL v Technická příručka. Úvod. Obecné. Konvence volání. Nastavení adresy karty

Algoritmizace a programování

Tabulkový procesor. Základní rysy

dovolují dělení velkých úloh na menší = dekompozice

Basic256 - úvod do programování Příklady. ing. petr polách

Regulární výrazy. Vzory

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.

První kapitola úvod do problematiky

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

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

Programování v jazyce JavaScript

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

8 Makra Příklad 4 Excel 2007

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

10 Algoritmizace Příklad 2 Word 2007/ VBA

Algoritmizace a programování

7. Datové typy v Javě

Generátor list nastavení

Sada 1 - Základy programování

Programujeme v softwaru Statistica

Sada 1 - PHP. 03. Proměnné, konstanty

Seminář Java II p.1/43

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Operační systémy Linux, Mac OS X a jejich srovnání

Transkript:

O jazyce Visual Basic -2- Aplikační software na PC Visual Basic for Applications RNDr. Jan Preclík preclik@ksvi.mff.cuni.cz Nerozlišuje malá/velká písmena Komentář: text za znakem ' (apostrof) až do konce řádku Přiřazovací příkaz = Jeden příkaz na jednom řádku pokračovací řádky, řádek končí dvojicí znaků mezera+podtržítko ActiveCell.FormulaR1C1 = _ "*" -3- -4- Podmíněný příkaz Podmíněný příkaz vnořování Neúplný nebo Úplný nebo If <podmínka> Then <příkaz> If <podmínka> Then End If If <podmínka> Then <příkaz> Else <příkaz> If <podmínka> Then Else End If If <podmínka> Then ElseIf <podmínka> Then Else End If Podmíněný příkaz Select Case Cyklus s předem známým počtem průchodů -5- -6- SelectCase <testovaný výraz> Case <seznam možností 1> 'odděl."," <příkazy 1> Case <seznam možností 2> <příkazy 2>... Case Else End Select SelectCase Vstup Case 1, 5 Vystup = 11 Case 3, 8 Vystup = 33 Case Else Vystup = 99 End Select For i=<počátek> To <konec> [Step <krok>] Next i For Each <prvek> In <skupina_prvků> Next <prvek> 1

-7- -8- Cyklus s podmínkou na začátku Cyklus s podmínkou na konci While <podmínka> WEnd Do Loop Until <podmínka> Do While <podmínka> ' stejné jako While..Wend Loop Do Until <podmínka> ' dokud neplatí podmínka Loop Do Loop While <podmínka> -9- - 10 - Proměnné ve VB Jednoduché datové typy Proměnné není nutné deklarovat Vynucení deklarací Option Explicit Deklarace klíčové slovo Dim Dim <proměnná> As <typ> Lze je deklarovat v podstatě kdekoliv (tj. nejen na začátku bloku) Pokud proměnná nemá uveden typ, je typu Variant Datový typ Boolean Integer Long Rozsah hodnot True, False -32 768.. 32 767-2 147 483 648.. 2 147 483 647 Paměťová náročnost 2 byty 2 byty 4 byty Dim A, B As Integer 'A je typu Variant, B je typu Integer - 11 - - 12 - Jednoduché datové typy Jednoduché datové typy Datový typ Single Double Currency Rozsah hodnot -3,042823*10 38.. 1,401298 *10-45 0 1,401298 *10-45.. 3,042823*10 38-1,79769313486*10 308.. 4,94065645841 *10-324 0 4,94065645841 *10-324.. 1,79769313486*10 308-922 337 203 687 477,5808.. 922 337 203 687 477,5808 Pam. náročn. 4 byty 8 bytů 8 bytů Datový typ Date Object String Variant Rozsah hodnot 1.1.100..31.12.9999 ukazatel na objekt záleží na operačním systému obecný typ, může reprezentovat libovolný VBA typ Paměťová náročnost 8 bytů 4 byty 1byte na 1znak 16 bytů+1byte na 1 znak (pokud hodnota obsahuje řetězec) 2

Proměnné ve VB rozsah platnosti - 13 - Deklarace konstant - 14 - <platnost>/dim <proměnná> As <typ> Modifikátory platnosti: Dim (resp. na úrovni modulu i Private) platnost v podprogramu nebo v modulu Public deklarace na úrovni modulu, platnost v celém projektu Static platnost pouze v podprogramu, ale uchová si hodnotu i do příštího spuštění Modifikátory Private, Public nelze použít v podprogramu Dim Soukroma As Integer Private Soukroma_2 As Integer Public Verejna As Integer [<platnost>] Const <jméno> As <typ> = <hodnota> Const Max As Integer = 15 Deklarace vlastních typů - 15 - Pole statické - 16 - Deklarace na úrovni modulu (ne v podprogramu!) [<platnost>] Type <jméno> <položka1> As <typ> <položka2> As <typ>... End Type Přístup k položkám tečková notace Private Type TOsoba Jmeno As String Vek As Integer End Type Dim Ja As TOsoba Ja.Jmeno = "Jan Preclik" Ja.Vek = 27 Deklarace pole Dim Pole(15) As Integer Dim Matice(10,20) As Boolean Indexy polí od 0 (default) nebo 1 Option Base 0 => Pole má 16 prvků nebo Option Base 1 => Pole má 15 prvků Indexy z daného intervalu Dim Policko(5 To 20) As Integer Pole dynamické - 17 - Objekty - 18 - Deklarace pole Dim Dynamicke_Pole() As Integer Velikost pole nastavuji před prvním použitím ReDim Dynamicke_Pole(10) Dynamicke_Pole(10) = 1 'lze Dynamicke_Pole(15) = 1 'chyba ReDim Dynamicke_Pole(12 To 18) Dynamicke_Pole(15) = 1 'lze Na rozdíl od jednoduchých proměnných je nutno pro přiřazení použít příkaz Set Set <prom.typu objekt> = <objekt> Dim Oblast As Object... Set Oblast = Range("A1:B3") 3

Podprogramy - 19 - Podprogramy Procedury [<platnost>] [Static] Sub <jméno> [(param.)] <příkazy v těle> Lze je nahrát makrokamerou Sub Ukazka() 'pro Excel 'do aktivní buňky přiřadí hodnotu 13 ActiveCell.FormulaR1C1 = "13" Funkce [<platnost> [Static] Function <jméno> [(param.)] [As <typ funkce>] <příkazy v těle> <jméno> = <hodnota fce> [Exit Function] Nelze je nahrát Lze je použít např. v buňce na listu Excelu Function Soucet(A As Integer, B As _ Integer) As Integer Soucet = A + B Procedur Volání podprogramů Bez parametrů <jméno proc.> S parametry: <jméno proc.> <hodn.par1>, <hodn.par2>,... Funkcí Parametry se píší do závorek pouze pokud má funkce vracet hodnotu Není nutno dodržovat pořadí parametrů: <jméno proc.> <název par1>:=<hodn.par1>,... -21 - Volání podprogramů Sub Bez_parametru() MsgBox "ahoj" Sub S_parametry(Par1 As String, Par2 As String) MsgBox Par1 + Par2 Function Vynasob(A As Integer, B As Integer) _ As Integer Vynasob = A * B Bez_parametru S_parametry "mff ", "uk" S_parametry Par2:="uk", Par1:="mff " Vynasob 4, 5 'lze, ale nic to nevrátí V = Vynasob(4, 5) 'do V dosadí 20 Předávání parametrů Předávání parametrů -20- -22- -23- -24- Odkazem Standardně, případně klíčové slovo ByRef Odkazem lze předat i konstantu!?!?!?!?!?! (její hodnota se ale naštěstí nezmění ) Hodnotou Nutno explicitně specifikovat klíčovým slovem ByVal Sub Soucet(ByVal A As Integer, ByVal B As _ Integer, ByRef Vysledek As Integer) Vysledek = A + B Const K As Integer = 7 Dim V As Integer Soucet 2, 3, V 'do V dosadí 5 Soucet 2, 3, 4 'lze, nic nedosadí nikam Soucet 2, 3, K 'lze, hodnota K se nezmění 4

Nepovinné parametry Nepovinné parametry Klíčové slovo Optional Musí být typu Variant Při volání zbytek parametrů mohu vynechat Nepovinné parametry musí být až na konci seznamu parametrů Function Soucet_rady(Pocatek As Integer, Konec _ As Integer, Optional Krok = 1) As Integer Dim I As Integer, Soucet As Integer Soucet = 0 For I = Pocatek To Konec Step Krok Soucet = Soucet + I Next I Soucet_rady = Soucet MsgBox Soucet_rady(1, 5, 1) 'vypíše 15 MsgBox Soucet_rady(1, 5) 'vypíše také 15 Nepovinné parametry Function Soucet_rady(Pocatek As Integer, Konec _ As Integer, Optional Krok) As Integer Function Soucet_rady(Pocatek As Integer, Konec _ As DimInteger, I As Integer, Optional Soucet Krok As= 1) Integer As Integer DimIfI As IsMissing(Krok) Integer, Soucet Then AsKrok Integer = 1 Soucet = 0 For I = Pocatek To Konec Step Krok Soucet = Soucet + I Next I Soucet_rady = Soucet MsgBox Soucet_rady(1, 5, 1) 'vypíše 15 MsgBox Soucet_rady(1, 5) 'vypíše také 15 Fce VBA matematické Abs(výraz) absolutní hodnota výrazu Fix(výraz) celá část Int(výraz) nejbližší nižší celé číslo, pro záporná čísla se liší od Fix() Sgn(výraz) signum (znaménko +1, 0, -1) Sqr(výraz) druhá odmocnina Exp(výraz) e umocněno na výraz Log(výraz) přirozený logaritmus Cos(výraz), Sin(výraz), Tan(výraz) Atn(výraz) arcustangens Rnd(typ) náhodné číslo z intervalu <0;1) Randomize(seed) inicializuje generátor pseudonáhodných čísel -25- -26- -27- -28- -29- -30- & (binární operátor) spojení dvou řetězců Len(řetězec) vrací počet znaků řetězce LCase(řetězcový_výraz): String převede řetězec na řetězec zapsaný malými písmeny UCase(řetězcový_výraz): String převede řetězec na řetězec zapsaný velkými písmeny Format(výraz, formát): String výraz je zformátován podle parametru formát, což je uživatelsky definovaný formát Space(n): String vytvoří řetězec n mezer String(n, z): String vytvoří řetězec délky n opakováním prvního znaku ze z RTrim(řetězcový_výraz): String vrací kopii řetězce bez koncových mezer Trim(řetězcový_výraz): String vrací kopii řetězce bez úvodních a koncových mezer InStr(start, S1, S2, typ porovnání): Boolean zjistí zda řetězec S2 se vyskytuje v řetězci S1, prohledávání v řetězci S1 začíná na pozici start Mid(řetězcový_výraz, start, délka): String vrací podřetězec zadaného řetězce začínající na pozici start o délce délka 5

-31 - Porovnání řetězců Operátory =, <>, <, >, <=, >= Operátor Like Fce StrComp(řet1, řet2, [volba]) řet1 = řet2 => 0 řet1 < řet2 => -1 řet1 > řet2 => 1 Operátor Like? * # [charlist] [!charlist] [A-C] lib.jednoduchý znak žádný znak nebo lib. počet znaků číslice (0 9). lib. jednoduchý znak v seznamu lib. jednoduchý znak, který není v seznamu seznam A, B, C If Not(Retezec Like "*[!0-9]*") Then 'obsahuje Retezec pouze číslice? Left(řetězcový_výraz, n): String vrací prvních n znaků od začátku řetězce Right(řetězcový_výraz, n): String vrací prvních n znaků od konce řetězce Chr(kód_znaku): String vrací řetězec obsahující znak odpovídající kódu znaku Asc(string): Integer vrací kód prvního znaku řetězce AscW(string): Integer vrací kód Unicode prvního znaku řetězce Str(výraz): String převede číslo nebo číselný výraz na řetězec Val(řetězcový výraz): Double převede řetězec nebo jeho část na číslo přípustný oddělovač desetin pouze desetinná tečka!!! Fce VBA konverzní Fce VBA datum a čas -32- -33- -34- -35- -36- Převede výraz na uvedený typ CBool(výraz) CByte(výraz) CCur(výraz) CDate(výraz) CDbl(výraz) CDec(výraz) CInt(výraz) CLng(výraz) CSng(výraz) CVar(výraz) CStr(výraz) Date(): Variant vrátí aktuální systémové datum Time(): Variant vrátí aktuální systémový čas Now(): Variant vrátí aktuální systémové datum a čas 6

Fce VBA datum a čas Fce VBA datum a čas Day(datum) z datumu určí pořadí dne v měsíci, číslo 1-31 Weekday(datum) z datumu určí pořadí dne v týdnu, počínaje nedělí, číslo 1-7 analogicky Month, Year Second(čas) číslo 0-59, představující počet sekund vuvedeném časovém údaji analogicky Minute, Hour DateSerial(rok, měsíc, den): Date vrátí hodnotu odpovídající zadanému datumu TimeSerial(hodina, minuta, sekunda): Date vrátí hodnotu odpovídající zadanému času DateValue(řetězec): Date řetězec musí mít tvar platného datumu, pak vrátí odpovídající hodnotu typu Date TimeValue(řetězec): Date řetězec musí mít tvar platného časového údaje, pak vrátí odpovídající hodnotu typu Date Fce VBA kontroly typu -37- -38- -39- TypeName(proměnná): string vrací název typu proměnné IsDate(výraz): boolean říká zda výraz může být převeden na datum IsEmpty(proměnná): boolean zjišťuje zda proměnná je inicializovaná nebo zda ji nebyla přiřazena hodnota Empty 7