Transcript

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

VariantMin. 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 pojemnovanouoblast „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(„List1“).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á=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

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],[porovná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:R5C5)“

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

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

Activate

Calculate

Change

Deactivate

BeforePrint

Activate

BeforeClose

BeforePrint

BeforeSave

BeforePrint

Deactivate Open SheetCalculate SheetChange StartUp

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


Recommended