Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba » vlastnosti-metody-udalosti-kolekce-excel-vba

Vlastnosti, Metody, Události, Kolekce - VBA

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Co Vám pomáhá tvořit programy ve VBA, v MS Excelu a nejen Excelu, funguje i v MS Access, MS Word, MS PowerPoint.

Úvodem do programování

Microsoft Excel logo

VBA v Excelu je programování objektově orientováno. Tj. obsahuje určité objekty (buňky, graf, list, sešit, tlačítko) a s těmito "objekty lze něco tvořit, nějak je modifikovat, usměrňovat. K tomu slouží čtyři pomůcky (hlediska):

V následujícím textu si je rozebereme podrobněji. Tyto "hlediska" se pokusím přiblížit na příkladu s osobním automobilem.


Vlastnosti

Jméno, Font, Velikost písma, Hodnota ... Příklad s autem - jeho barva, výkon, výrobce.

Vlastnosti popisuje "charakteristiku" objektu (je měřitelná). Důležitou vlastností objektů je Jméno (Name), které slouží k identifikaci. Své jméno (Name) má sešit, list, tlačítko, zaškrtávací pole, ...). Změníte názvu listu (nemusí být provedeno přímo ve VBA, stačí změnit název listu klasicky, pravým tlačítkem myší), tím se provede změna vlastnosti Name (takže vlastnost Name už nebude List1, ale například MujNazev.

Provedení změny vlastnosti ve VBA. Nejprve musíme definovat objekt a pak vlastnost kterou chceme nastavit a pak její hodnotu. V uvedeném příkladu změníte vlastnost Listu1 (jeho jméno).

Sheets("List1").Name = "MujNazev"

Metody

Akce: Vybrat, Vymazat, Kopírovat, Přepočítat, ... Příklad s autem - nastartovat, zmačknout spojku, zařadit, přidat plyn, ...

Pod metodou si můžeme představit nějakou akci, kterou může objekt provést (vybrat, vymazat, kopírovat). Takže pokud budete chtít přepočítat aktivní list použijeme VBA kód:

Sheets.Calculate

Události

Po otevření, po přepočítaní, před tiskem, ... Příklad s autem - po nastoupení do vozidla, po nastartování, ...

Pokud je nastane požadovaná událost, Excel na ní může reagovat a spustit nějaký kód. Udalosti na které Excel rozpozná. Otevření sešitu, Zavření sešitu, Uložení sešitu, Přepočítání sešitu, Změna dat v buňce, atd.

Například po otevření sešitu chceme spustit dialogový box s textem.

Private Sub Workbook_Open() MsgBox "office.lasakovi.com" End Sub

Podrobněji o událostech jsem se zmínil v článku Události ve VBA MS Excelu - obecný úvod.

Kolekce

Kolekce je soubor objektů obsažen v jiném objektu. Zní to složitě, ale není. Jak už jsem řekl Excel VBA je objektově orientované programování (což přináší obrovské výhody). Takže budete-li chtít provést skupinu příkazu, využijete kolekce.

Představte si potřebu do všech listu na zápatí připsat poznámku o autorovi. Někdo může namítnout, že existují cykly. Ano existuji, ale budeme mít cyklus pro 3 listy, někdo přidá list 4 a již se nám na tento naše autorství nedostane. Programovat kontrolu na počet listu je složitější než použít jiný způsob. Jak již víme list je objekt. Takže to uděláte efektivněji pomocí kolekci, čímž podpisy do zápatí doplníte.

For Each List In Worksheets List.PageSetup.LeftFooter = "office.lasakovi.com" Next List

Případně přejmenovat listy a jméno vzít z buňky A1.

Dim w As Worksheet For Each w In ThisWorkbook.Worksheets w.Name = w.Range("A1").Value Next w

Závěrem

Rozdíly mezi Vlastnosti, Metodou, Události, Kolekci snad jsou z článku pochopitelné, pokud ne existují komentáře.

Článek byl aktualizován: 11.08.2015 18:15

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2000 (od 2004 ne této doméně) - Roku 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici také na on-line videích pro SEDUO. Školím a konzultuji, učím na MUNI. Hlavně tvořím tento web. Je zde k dispozici přes 1.000 návodu, tipů a triků včetně stovek různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


Mikoláš Sígl

Přidáno: 16.11.16 18:26

Změna hodnoty bunky je událost. Může tato událost spustit makro? ALE POZOR jde mi o situaci, kdy hodnota v bunce nebude měněna stiskem klávesy ale tím, že při výpočtu (externí propojení) dojde ke změně bunky, kde je umístěn vzorec. děkuji

Jojo

Přidáno: 21.11.16 10:15

To Mikoláš Sígl: -- Testovanie zmeny bunky po prepočte by som riešil asi takto: (netestované pre externé prepojenie)Private OldValue Private Sub Worksheet_Activate() OldValue = Range("A1") End Sub Private Sub Worksheet_Calculate() If Range("A1") <> OldValue Then MsgBox "Bunka bola zmenená" OldValue = Range("A1") End Sub -- Iná možnosť je zapamätať si pôvodnú(východziu) hodnotu pri otváraní súboru







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2017 | 18938

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.