Top Banner
Petr Blaha
39

VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Oct 13, 2018

Download

Documents

phungcong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Petr Blaha

Page 2: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

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 Cykly Základní funkce (matematické, textové, data a

času) Message box a prompt Zadávání funkce do buňky Funkce s parametrem

Page 3: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Automatizace

Vytvoření vlastní funkce

Vytvoření zcela nové aplikace

Page 4: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Proměnná◦ Místo v paměti pro uložení informace

Rozsah◦ Lokální

◦ Globální

Page 5: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Teoreticky cokoliv v anglické klávesnici, bez mezer a znaků jako „!, %, -,/“ atd

Jednoznačné názvy

Např:◦ „dnes“, „rovnice“, „pocet_obratek“,

„dlouheCeleCislo“

Page 6: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Typ Velikost Rozsah Význam

Byte 1 bajt 0-255 Binární data

Integer 2 bajty -32.768 až 32.768 Základní celá čísla

Long 4 bajty -2 mld. až + 2 mld. Rozšířená celá čísla

Single 4 bajty Desetinná čísla (6 míst)Základní desetinná

čísla

Double 8 bajtů Desetinná čísla (12 míst)Rozšířená

desetinná čísla

Decimal 14 bajtů Desetinná čísla (28 míst) Nelze deklarovat

Page 7: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Typ Velikost Rozsah Význam

Currency 8 bajtů 4 desetinná místa Rychlejší výpočty

String různá 2x109 znaků Textové hodnoty

Boolean 2 bajty 0 nebo 1 (true/false) Logická hodnota

Date 8 bajtů 1.1 100 až 31.12.9999 datum

Object 4 bajty objekt Odkaz na objekt

VariantMin. 16 bajtů

libovolný Pro neznámé typy

Page 8: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Procedura◦ Série příkazů, které se mají provést

Funkce◦ Série příkazů, které se mají provést

◦ Vrací hodnotu

Page 9: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Akce, kterou vyvolá uživatel nebo systém, na kterou je aplikace schopná reagovat

Otevření sešitu, zavření sešitu, aktivace buňky…

Page 10: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Funkce Operátor

Umocnění ^

Násobení, dělení *,/

Zbytek po dělení mod

Sčítání, odčítání +,-

Logické funkce NOT, AND, OR, XOR

Řetězové &

Základní =, >,<,<>

Menší/větší nebo rovno <=,>=

Page 11: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Application

Workbooks

Sheets

Range Charts Tables PivotTables …

Page 12: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Odkaz na buňku, buňky,oblast buňek, sloupec/řádek, celý list

Range(„A1“) – odkaz na buňku A1

Range(„A1:B5“) – odkaz na buňky A1 až B5

Range(„A1,B5,C6:D6“) – odkaz na buňky A1, B5 a C6 až D6

Range(„ahoj“) - odkaz na pojemnovanouoblast „ahoj“

Page 13: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Range(„A1“).offset(2,2).select◦ Vybere buňku o 2 vpravo a o 2 níže než A1

Selection.end(argument).select◦ Vybere poslední buňku dle argumentu◦ xlDown,xlUp,xlToLeft,xlToRight

Selection.resize(x,y).select◦ Zmenší vybranou oblast na x a y

Range(Selection,Selection.End(xlUp)).Select◦ Vybere vše od vybrané oblasti až po poslední buňku

nahoru◦ Ekvivalent je Ctrl+Shift+šipka nahoru

Page 14: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Odkaz na buňku, buňky,oblast buňek, sloupec/řádek, celý list

Cells(1,1) – odkaz na buňku A1

ALE!!!

Range(Cells(1, 1), Cells(2, 5)) odkaz na buňky A1 až B5

Page 15: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Úplný odkaz na:

Buňku A1 v VBA.xlsx na listu1:

Application.Worksheets(„VBA.xlsx“).Sheets(„List1“).Range(„A1“)

Pokud programujeme na stejném listu:

Range(„A1“)

Page 16: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Metadata objektů:

Buňka◦ Vlastnosti: Font, Velikost písma, hodnota,…

◦ Metody: Vybrat, Vymazat, Kopírovat

Sešit◦ Vlastnosti: Jméno, ochrana, typ

◦ Metody: Vybrat, Vymazat, Kopírovat

◦ Události: před/po kliknutí myší, po kalkulaci, po přepočítání

Page 17: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Range(„A1“).Select

Range(„A1“).Font

Range(„A1“).copy range(„B2“)

ActiveSheet.creator

ActiveSheet.move

Sub Activesheet_onChange()

End sub

Page 18: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

->Možnosti aplikace Excel->Centrum zabezpěčení ->Nastavení centra zabezpečení ->Povolit všechny makra

Page 19: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Alt + F11

Page 20: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce
Page 21: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Sub vyber()

Range(„A1“).select

End sub

Page 22: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Sub vyber()

Range(„A1“).select

Selection.Font.Name = „Arial“

Selection.Font.Size = 15

Selection.Value = „AHOJ“

End sub

Page 23: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

IF podmínka THEN◦ Příkazy když je podmínka splněna

ELSE◦ Příkazy když není podmínka splněna

END IF

Možné podmínky:◦ A>B

◦ Cislo=5

◦ (Dnes=„pátek“ AND zítra=„sobota“)

Page 24: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Select Case ProměnnáCase Hodnota1

Příkazy, když Proměnná=Hodnota1Case Hodnota2

Příkazy, když Proměnná=Hodnota2Case Hodnota3

Příkazy, když Proměnná=Hodnota3Case Else

Příkazy, když Proměnná=něco jinéhoEnd Select

Page 25: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Do While podmínka

příkazy

Loop

Do Until podmínka

příkazy

Loop

Page 26: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

FOR podmínka TO podmínka STEP krok

příkazy

NEXT

Page 27: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Dim ws As Worksheet

For Each ws In Application.Worksheets

ws.Visible = True

ws.Range("A1").Value = "Bla"

Next

Page 28: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

FOR i=0 TO 9999 STEP 1

cells(i,15).value=i

IF i=55 THEN

EXIT FOR

END IF

NEXT

Page 29: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Matematické◦ Abs(hodnota) – absolutní hodnota

◦ Round(hodnota,[desetiny]) – zaokrouhlení na [desetiny]

◦ Sqrt(hodnota) - odmocnina

Page 30: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Textové◦ Left(text,délka),Right(text,délka)

vrátí určený počet znaků zleva/zprava

◦ Mid(text,začátek,[délka])

vrátí celý text(případně [délka] znaků od začátku

◦ Trim(text)

Oseká mezery před a za

◦ Lcase(text), Ucase(text)

Převede text na malá/velká písmena

Page 31: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Textové◦ InStr([začátek],text1,text2,[porovnání])

Vrátí číslo 1.pozice textu2 v textu1 počínaje znakem [začátek]nebo 0 při nenalezení.

[porovnaní]

0 pro binární porovnání (vbBinaryCompare)

1 pro textové porovnání (vbTextCompare)

◦ Replace(výraz,hledat,nahradit,[začátek],[počet],[porovnání]

Nahradí ve výrazu text hledat za nahradit početkrát za použití porovnání viz výše

Page 32: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Datum a čas

Day(datum),Month(datum),Year(datum)

WeekDay(datum,[začátekTýdne])

DayDiff(intervalů,od,do,[prvníDenTýdne])◦ Vrátí počet intervalů („yyyy“,“m“,“d“,“h“,…) od data

do data

Now() – vrátí „12.4.2009 13:52:44“

Hour(čas),Minute(čas),Second(čas)

Page 33: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

MsgBox(text,[buttons],[title], [HelpFile])

Zobrazí „text“ v infookně

Buttons◦ vbOKOnly, vbOKCancel, vbAbortRetryIgnore,

vbYesNoCancel, vbYesNo,vbRetryCancel

Title – nadpis

HelpFile – odkaz na místní nápovědu

Page 34: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

InputBox(text,[title], [default], [xpos], [ypos],[helpFile], [HelpContextId])

Zobrazí okno s možností vstupu

Text – výzva k zadání

Default – předvyplněná hodnota

Xpos,Ypos – pozice okna

HelpFile, HelpContextId – odkaz na help

Page 35: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Sub upravVelikostFontu(velikost)

selection.font.size=velikost

End sub

Page 36: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Range(„A1“).formula=„Average(A2:B5)“

Range(„A1“).formulaR1C1=„Average(R2C1:R5C5)“

Range(„A1“).formulaLocal=„průměr(A2:B5)“

Range(„A1“).formulaR1C1=„průměr(R2C1:R5C5)“

Page 37: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Activate

Calculate

Change

Deactivate

BeforePrint

Page 38: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

Activate

BeforeClose

BeforePrint

BeforeSave

BeforePrint

Deactivate Open SheetCalculate SheetChange StartUp

Page 39: VBA pro MS Excel - lorenc.info · Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.aspx