Základy VBA - Školení, tvorba webových stránek, SEO ?· Skripta ke školení Základy VBA vypracoval:…

  • Published on
    18-Aug-2018

  • View
    212

  • Download
    0

Transcript

Skripta ke kolen Zklady VBA vypracoval: Tom Herout e-mail: herout@helpmark.cz tel: 739 719 548 2016 mailto:herout@helpmark.czHelpMark www.helpmark.cz |email: herout@helpmark.cz | tel.: 739 719 548 2016 Tom Herout 1 Obsah TROCHA TEORIE VBA ..........................................................................................................................2 ZPSOB ZPISU VE VBA ........................................................................................................................2 CO JE TO FUNKCE .................................................................................................................................2 CO JE TO PROCEDURA ...........................................................................................................................2 ZKLADN STAVEBN KAMENY VBA ....................................................................................................3 PROMNN ........................................................................................................................................3 POLE .................................................................................................................................................4 KIOVATKY (PODMNKY) ......................................................................................................................4 IF .................................................................................................................................................4 IIf .................................................................................................................................................5 Select Case ...................................................................................................................................5 CYKLY................................................................................................................................................5 For ...............................................................................................................................................5 For Each .......................................................................................................................................6 OPERACE S VBA ..................................................................................................................................7 NATN HODNOT Z TABULEK A VKLDNO DO TABULEK .............................................................................7 MsgBox ........................................................................................................................................7 Range(AdresaBunky) ....................................................................................................................7 SLEDOVN UDLOST ...........................................................................................................................7 HelpMark www.helpmark.cz |email: herout@helpmark.cz | tel.: 739 719 548 2016 Tom Herout 2 Trocha teorie VBA Zkratka VBA znamen Visual Basic for Application. Vtinou se pouv k: 1. Opakovn stle stejnch operac, kdy se d pi prvn operaci spustit nahrvn makra, a toto makro pomoc jazyka VBA zaznamenv operace. Kdykoli se pak d spustit a provede tot 2. Pro prci s formuli, kdy uivatel me data vkldat do formule a a formul vytvo strukturu dat 3. Za elem automatick tvorby graf 4. Prce se soubory 5. K vytven vlastnch funkc nad rmec funkc, kter jsou v Excelu integrovny Zpsob zpisu ve VBA 1. VBA nerozliuje velikost psmen 2. Pkaz se ukonuje tm, e zanete pst na nov dek (ne stednkem). V ppad, e si budete chtt kd zpehlednit zalomenm na nov dek, muste pout podtrtko 3. Pouv tzv. tekovou notaci. Pedstavte si ji jako: cesko.praha Co je to funkce Funkce je kus obalenho kdu, ktermu dme nzev. Dky tomu nzvu ji meme opakovan pouvat kdykoli to budeme potebovat. Bude stait tu funkci jen zavolat a sdlit j, co po n chceme. Tomu pedvn informac obsahujc to, co po funkci chceme, se odborn k argumenty. Pi voln funkce se argumenty zapisuj do zvorek. Nkter funkce mohou pebrat vce argument. Jeden argument od druhho se uvnit zvorek oddluje pomoc stednk. Funkce nm vrac njakou hodnotu. Teba slo, zda je to pravda apod. Ukzka zavoln funkce: =NAZEVFUNKCE(argument-jedna; argument-dva; ) Ukzka vytvoen funkce: Function NazevFunkce(argument) njak kd End Function Co je to procedura Je to tak obalen kd, kter se spust, kdy ho potebujeme, ale nevrac dnou hodnotu. Ukzka zpisu procedury: Sub Nazev() njak kd End Sub HelpMark www.helpmark.cz |email: herout@helpmark.cz | tel.: 739 719 548 2016 Tom Herout 3 Zkladn stavebn kameny VBA Promnn Promnn se pouvaj vdy, pokud m kd pracovat s njakmi daty (teba sli) vloenmi uivatele. Pouvaj se v praxi i k mnoha dalm vcem. Napklad ke zpehlednn kdu. U VBA je teba nejprve urit druh promnn, ne ji v relu pouijete. Pklad: Dim NazevPromenne As Integer NazevPromenne = 1 Platnost promnn Nzev Popis Dim Plat jen doasn po dobu, kdy se vykonv kd procedury Private Doasn, ale je vidt ve vce procedurch v jednom modulu Public Zachov si platnost i po skonen operac Static Je nemnn (kdy k n nco pitete, tak zstane stejn) Datov typy Nzev Popis Integer Men sla od -32 768 do 32 767 Long Vt sla od -2 147 483 648 do 2 147 483 647 Single Desetinn msta 6 mst (nap. 0,654321) Double Desetinn msta 12 mst Decimal Desetinn msta 28 mst Date Datum nap. 1. 1. 2001 String Textov etzec Boolean Pravdivostn (pravda / nepravda) Variant Ostatn promnn, teba Error HelpMark www.helpmark.cz |email: herout@helpmark.cz | tel.: 739 719 548 2016 Tom Herout 4 Pole Pole jsou nco podobnho, jako promnn. Rozdl je v tom, e v jednom poli me bt vce promnnch. Kad z promnnch uvnit pole m sv slo (index). Pozor, sla zanaj nulou. Tedy nap: Dim Pole(3) As Variant Pole(0) = "Mu" Pole(1) = "ena" Pole(2) = "neureno" MsgBox Pole(0) & " " & Pole(1) & " " & Pole(2) Kiovatky (podmnky) IF U nzev napovd, e se jedn o podmnku. Pokud je podmnka splnna (je pravda), tak se vykon kd umstn v podmnce. Pklad zpisu: If x > 0 Then MsgBox x "> 0" End If Me se stt ppad, kdy budeme chtt nco vykonat i v ppad, kdy podmnka platn nebude. K tomu nm slou Else. Pklad: If x > 0 Then MsgBox x "> 0" Else MsgBox x "< nebo = 0" End If Meme tak chtt ovit vce ne jen jednu podmnku. Pak pouijeme ElseIf. If x > 0 Then MsgBox x "> 0" ElseIf x = 0 MsgBox x " = 0" Else MsgBox x "< 0" End If Opertory pouvan u podmnek Opertor Popis > x vt ne y < x men ne y >= x vt nebo rovno ne y HelpMark www.helpmark.cz |email: herout@helpmark.cz | tel.: 739 719 548 2016 Tom Herout 5 x nerovn se y Like Porovnn etzc Is Porovnn promnnch odkazujc na objekty And Spojen podmnek, nap.: x > 0 And x < 100 Or Bu jedno, nebo druh x > 0 Or x < 0 IIf V jdru tot, co If, ale jednodu zpis. Ukzka: vstup = MsgBox("Chcete vstoupit?", vbYesNo, "Vstup") MsgBox (iif(vstup = vbYes, "Vtejte a pokraujte", "Nashledanou")) Select Case Pouv se ve stejnch situacch, jako If a Elseif. Jeho pouit je tam, kde je kiovatka s mnoha odbokami. Select Case promenna Case pondl MsgBox ("pondl") Case ter MsgBox ("ter ") Case steda MsgBox ("steda ") End Select Cykly Cykly provdj njak kd tak dlouho, dokud je to poteba. Pokud nap. chceme vypsat cel pole (vce promnnch pod jednm nzvem), meme pout cyklus. For Zde pklad: Dim Pole(3) As Variant Pole(0) = "Mu" Pole(1) = "ena" Pole(2) = "neureno" Dim i As Integer Dim ii As Integer Dim bunka As Variant ii = 1 For i = 0 To UBound(Pole) bunka = "A" & ii Range(bunka) = Pole(i) ii = ii + 1 Next i HelpMark www.helpmark.cz |email: herout@helpmark.cz | tel.: 739 719 548 2016 Tom Herout 6 Popis pkladu: 1. dek vytv pole pojmenovan jako Pole a definuje mu ti hodnoty 2. a 4. dek vytv hodnoty v polch 5. a 7. dek vytv promnn 8. dek definuje promnnou ii, kterou pouijeme pro vytven dynamickch adres bunk 9. dek otevr cyklus, stanovuje promnnou i na hodnotu 0 a za To, vype poet opakovn, kter nejprve zjiuje pes funkci UBound(Pole). 10. dek vytv promnnou bunka, kter se pi kadm cyklu bude mnit 11. dek zajist, e se pi kadm cyklu zv promnn ii 12. dek ukonuje cyklus a vrac ho na 9. dek For Each Je pmo uren k prochzen pol. M krat zpis: Dim Bun_hod As String For Each Bun In ActiveSheet.Range("A1:A5") Bun_hod = Bun_hod & vbNewLine & Bun.Address & " - " & Bun.Value Next Bun MsgBox Bun_hod HelpMark www.helpmark.cz |email: herout@helpmark.cz | tel.: 739 719 548 2016 Tom Herout 7 Operace s VBA Natn hodnot z tabulek a vkldno do tabulek VBA samozejm mus umt pracovat s tabulkami Excelu, jinak by to nedvalo smysl. MsgBox Oteve okno nad Excelem a vype do nj libovolnou hodnotu, kterou chcete. Range(AdresaBunky) Pokud do zvorek vlote adresu buky (teba A1), tak tuto buku oznate a budete s n moci pracovat, teba do n zapsat njakou hodnotu. Pklad: Range("A1") = "test" Pokud byste naopak chtli nast hodnotu z njak buky a uloit ji do promnn, tak by zpis mohl vypadat zase takto: Dim NacteniZBunky As Integer NacteniZBunky = Range("A1").Value Vysvtlen: Prvn dek jen definuje budouc promnnou. Udv, e bude vidt pouze v rmci procedury a pak zanikne (et se tm vkon). Jako druh je uren slo. Druh dek ukld do promnn hodnotu z buky A1. Zskvat hodnoty meme pomoc vce pkaz: 1. Value vrt hodnotu, ale nemus bt zcela pesn (nap. zaokrouhlen) 2. Value2 vrt pesnj hodnotu. To se projevuje u data a mn 3. Text vrt pesn obsah buky Pokud bychom chtli zskat hodnotu z jinho listu, tak zde mte pklad: Dim NacteniZBunky As Integer NacteniZBunky = Worksheets("List1").Range("A1").Value Meme tak chtt nast buku, kter se nachz v jinm seit. V tom ppad by to mohlo vypadat takto: Application.Workbooks.Open ("C:\adresar\sesit.xlsx") Dim x As Integer X = Workbooks("sesit.xlsx").Worksheets("List1").Range("A1").Value Sledovn udlost Sledovn udlost slou k tomu, aby byl sputn njak kd (v procedue) na zklad njak udlosti, jako je nap. oteven seitu. Private Sub Workbook_Open() MsgBox "Vtme vs" End Sub