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

  • View
    215

  • Download
    0

Embed Size (px)

Transcript

  • Skripta ke kolen

    Zklady VBA

    vypracoval: Tom Herout

    e-mail: herout@helpmark.cz

    tel: 739 719 548

    2016

    mailto:herout@helpmark.cz

  • HelpMark 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.