Petr Blaha
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
Automatizace Vytvoření vlastní funkce Vytvoření zcela nové aplikace
Proměnná ◦ Místo v paměti pro uložení informace
Rozsah ◦ Lokální ◦ Globální
Teoreticky cokoliv v anglické klávesnici, bez mezer a znaků jako „!, %, -,/“ atd Jednoznačné názvy Např: ◦ „dnes“, „rovnice“, „pocet_obratek“, „dlouheCeleCislo“
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
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
Variant
Min. 16 bajtů
libovolný
Pro neznámé typy
Procedura ◦ Série příkazů, které se mají provést
Funkce ◦ Série příkazů, které se mají provést ◦ Vrací hodnotu
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…
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
<=,>=
Application
Workbooks
Sheets
Range
Charts
Tables
PivotTables
…
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 pojemnovanou oblast „ahoj“
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
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
Úplný odkaz na: Buňku A1 v VBA.xlsx na listu1: Application.Worksheets(„VBA.xlsx“).Sheets(„Li st1“).Range(„A1“)
Pokud programujeme na stejném listu: Range(„A1“)
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í
Range(„A1“).Select Range(„A1“).Font Range(„A1“).copy range(„B2“) ActiveSheet.creator ActiveSheet.move Sub Activesheet_onChange() End sub
->Možnosti aplikace Excel->Centrum zabezpěčení ->Nastavení centra zabezpečení ->Povolit všechny makra
Alt + F11
Sub vyber() Range(„A1“).select End sub
Sub vyber() Range(„A1“).select Selection.Font.Name = „Arial“ Selection.Font.Size = 15 Selection.Value = „AHOJ“ End sub
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“)
Select Case Proměnná Case Hodnota1
Příkazy, když Proměnná=Hodnota1 Case Hodnota2 Příkazy, když Proměnná=Hodnota2 Case Hodnota3 Příkazy, když Proměnná=Hodnota3 Case Else
End Select
Příkazy, když Proměnná=něco jiného
Do While podmínka
příkazy
Loop
Do Until podmínka
příkazy
Loop
FOR podmínka TO podmínka STEP krok
příkazy
NEXT
Dim ws As Worksheet For Each ws In Application.Worksheets ws.Visible = True ws.Range("A1").Value = "Bla" Next
FOR i=0 TO 9999 STEP 1 cells(i,15).value=i IF i=55 THEN EXIT FOR END IF NEXT
Matematické ◦ Abs(hodnota) – absolutní hodnota ◦ Round(hodnota,[desetiny]) – zaokrouhlení na [desetiny] ◦ Sqrt(hodnota) - odmocnina
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
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],[por ovnání] Nahradí ve výrazu text hledat za nahradit početkrát za použití porovnání viz výše
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)
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
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
Sub upravVelikostFontu(velikost) selection.font.size=velikost End sub
Range(„A1“).formula=„Average(A2:B5)“ Range(„A1“).formulaR1C1=„Average(R2C1:R5 C5)“ Range(„A1“).formulaLocal=„průměr(A2:B5)“ Range(„A1“).formulaR1C1=„průměr(R2C1:R5C 5)“
Activate Calculate Change Deactivate BeforePrint
Activate BeforeClose BeforePrint BeforeSave BeforePrint
Deactivate Open SheetCalculate SheetChange StartUp
http://msdn.microsoft.com/enus/library/microsoft.office.tools.excel.aspx