SlideShare uma empresa Scribd logo
1 de 20
352 - Katedra automatizační
         techniky a řízení

Technické výpočty


   Ing. David Fojtík, Ph.D.
        A922, kl. 4193
Cykly - opakování činností
Typy cyklů
• Pod pojmem cyklus v souvislosti s algoritmizací
  rozumíme řídící strukturu (direktivu)
  programovacího jazyka, která zajišťuje
  opakování zvolené sekvence příkazů.
• Cykly patří mezi základní stavební prvky
  algoritmů
• Základní typy cyklů…
   •   Inkrementační (přírůstkový) cyklus (For - Next)
   •   Logické cykly (Do - Loop):
        • s podmínkou na začátku
        • s podmínkou na konci
        • s podmínkou uprostřed                          Levý   Pravý
                                                         krok   krok
   •   Cyklus procházení kolekcí (For Each - Next)
Inkrementační cyklus For - Next
• Syntaxe
For počítadlo = počátek To konec [Step přírůstek]
       [příkazy]
       [If podmínka Then Exit For]    'tělo cyklu
       [příkazy]
Next [počítadlo]

                                               i = počátek
 – Cyklus opakuje příkazy tolikrát,
   kolikrát se vejde přírůstek do
   intervalu <počátek;konec>.                                     - Nepravda
                                                i ≤ konec
 – Přírůstek může být kladný i záporný,
   implicitně je roven jedné.                          + Pravda
   Není vhodné používat reálný typ.
 – Počítadlo se často v těle cyklu využívá       Příkazy
   pozor však na modifikaci počítadla.
 – počátek, konec, přírůstek může
   být proměnná.                             i = i + přírůstek

 – Exit For ihned ukončí cyklus
Příklad cyklus For-Next
Sub Main()
    Dim Cislo As Integer    'Číselná hodnota pro výpočet faktoriálu
    Dim i As Integer        'Iterační pomocná proměnná
    Dim Faktorial As Double 'Výsledek výpočtu faktoriálu
'Nacteni hodnoty pro výpočet faktoriálu
    Cislo = InputBox("Zadej číslo:", "Výpočet Faktoriálu")
'Vlastní výpočet
    Faktorial = 1 '0! = 1
    For i = CisloCislo Step -1
            2 To To 2
        Faktorial = i * Faktorial
    Next
'Výpis výsledku
    MsgBox Cislo & "! = " & Faktorial, , "Výpočet Faktoriálu"
End Sub




                                Při uživatelském vstupu
  For stene = 1 To 3              (datový typ variant)
    Nakrmit(stene)
  Next
Logický cyklus Do-Loop
           s podmínkou na začátku
• Syntaxe
[příkazy inicializující podmínku]
Do While Podmínka
       [příkazy]
       [If StopPodmínka Then Exit Do]      'tělo cyklu
       [příkazy]
Loop
 – Cyklus opakuje příkazy tak dlouho,
                                           inicializace
   dokud je Podmínka pravdivá.              podmínky
 – Podmínka je tvořena logickým výrazem.
 – Je-li Podmínka na počátku nepravdivá                       - Nepravda
                                            podmínka
   cyklus se nevykoná ani jednou.
 – Před cyklem se musí inicializovat               + Pravda
   Podmínka a v těle cyklu se musí          Příkazy
   podmínka ovlivňovat, v opačném          (ovlivnění
   případě hrozí nekonečný cyklus.         podmínky)
 – Exit Do ihned ukončí cyklus
Logický cyklus Do-Loop
            s podmínkou na konci
• Syntaxe
Do
       [příkazy]
       [If StopPodmínka Then Exit Do]           'tělo cyklu
       [příkazy]
Loop While Podmínka

 – Cyklus opakuje příkazy tak dlouho,
   dokud je Podmínka pravdivá.                             Příkazy
                                                         (ovlivnění
 – Oproti cyklu s podmínkou na začátku                   podmínky)
   je obvykle kratší – ovlivnění podmínky
   je pouze v těle cyklu.                     + Pravda                - Nepravda
 – Cyklus se vždy vykoná aspoň jednou.                   podmínka

   Tělo cyklu se na počátku vykoná aniž by
   byla podmínka splněna (omezené použití).
 – Exit Do ihned ukončí cyklus
Logický cyklus Do-Loop
           s podmínkou uprostřed
• Syntaxe
Do
       [příkazy před podmínkou]
If Podmínka Then Exit Do                   'tělo cyklu
       [příkazy za podmínkou]
Loop

 – Cyklus opakuje příkazy tak dlouho,
                                                    Příkazy
   dokud je Podmínka nepravdivá.                před podmínkou
 – Podmínka je tvořena logickým výrazem.
 – Příkazy před podmínkou se vždy                                + Pravda
   vykonají aspoň jednou.                          podmínka

 – V těle cyklu se musí podmínka           - Nepravda
   ovlivňovat, v opačném případě
   hrozí nekonečný cyklus.                           Příkazy
                                                 za podmínkou
Příklady logických cyklů
Sub Main()
Sub Main()
Dim Cislo As Long
Dim Cislo As Long    'Aktuálně zadané číslo
                     'Aktuálně zadané číslo
    Dim Soucet As Long 'Celkový součet
    Dim Soucet As Long 'Celkový součet
    Do
    Cislo = InputBox("Zadej číslo:", "Sčítání...", 0)
    Do While Cislo <> 0 'Podmínka na začátku
    Do Cislo = InputBox("Zadej číslo:", "Sčítání...", 0)
    If Cislo ==0InputBox("Zadej číslo:", "Sčítání...", 0)
        Soucet = SoucetExit Do
         Cislo    Then + Cislo      'Podmínka uprostřed
        Cislo = = Soucet + Cislo číslo:", "Sčítání...", 0)
         Soucet InputBox("Zadej
    Loop While Cislo <> 0 'Podmínka na konci
    Loop
    MsgBox "Součet všech zadaných čísel je: " & Soucet, , "Sčítání..."
    MsgBox "Součet všech zadaných čísel je: " & Soucet, , "Sčítání..."
End Sub
End Sub



                     Jak na to?
                     Do Zmrzlina > 0
                       Lízat
                     Loop
Další varianty cyklu Do-Loop
• Zkrácená varianta s podmínkou na začátku
   [příkazy inicializující podmínku]
   While Podmínka
      [příkazy]
   Wend
• Varianta s podmínkou na začátku s direktivou Until
   [příkazy inicializující podmínku]
   Do Until Podmínka
       [příkazy]
   Loop
 – Cyklus Until opakuje příkazy, dokud je Podmínka nepravdivá.
• Varianta s podmínkou na konci s direktivou Until
   Do
      [příkazy]
   Loop Until Podmínka
Kolekce
Kolekce
• Pod pojmem kolekce v programovacím
  jazyce rozumíme skupinu shodných
  nebo příbuzných objektů tvořící celek.
• Prvek (element, člen) kolekce je právě
  jeden dílčí objekt kolekce.
• Samo osobě je kolekce objektem
• Příklady kolekcí:
 –   Přepravka (elementy: Láhve).
 –   Vlak (elementy: Vagóny)
 –   Čtvrť (elementy: Domy)
 –   Knihovna (elementy: Knihy)
 –   Studijní skupina (elementy: Studenti)
• Kolekce v MS Excelu:
 –   Workbooks (Workbook - Otevřené soubory)
 –   WorkSheets (WorkSheet – Listy souboru)
 –   Cells (Range – buňky listu)
 –   Selection (Range – vybrané buňky)
Procházení kolekcí: cyklus For Each
• Syntaxe                                            Jak na to?
                                                     Dim Láhev As LáhvovéPivo
  Dim Element As TypElementuKolekce                  For Each Láhev In Přepravka
                                                       Pít(Láhev)
  For Each Element in Kolekce                        Next
      [příkazy]
      [Zpracování elementu]
      [If podmínka Then Exit For]
  Next
– Cyklus postupně projde všechny prvky
  kolekce a dočasně je přiřadí do proměnné
  Element.
– Element musí být předem deklarován
  datovým typem shodným s prvky elementu.

Sub Main()
    Dim Bunka As Range 'Deklarace pomocné proměnné
    For Each Bunka In Selection
        Bunka.Interior.Color = vbRed
    Next
End Sub
Práce s buňkami
   MS Excelu
Výběr buňky
• Aktuální buňka
  ActiveCell
• Aktuální oblast
  Selection
• Podle adresy buňky
  Range("C4")
• Relativně vůči aktuální buňce/oblasti
  ActiveCell.Offset(r,s)
  Selection.Offset(r,s)
  r :posun na řádku, + dolů, - nahoru, 0 na místě
  s : posun na řádku, + do prava, - do leva, 0 na místě
• Podle názvu (buňka/oblast musí být pojmenována)
  Range("Nazev")
• Souvislá oblast buněk podle adresy oblasti
  Range("C4:E7")
• Nesouvislá oblast buněk podle adresy oblasti
  Range("A1,C4:E7,F2:G5")
Hodnota buňky
• Hodnota buňky – výsledek vzorce
  ActiveCell.Value
• Vzorec buňky v absolutních adresách
  ActiveCell.Formula
• Vzorec buňky v relativní adresách
  ActiveCell.FormulaR1C1
• Adresa buňky/oblasti
  ActiveCell.Address
  Selection.Address
• Název buňky/oblasti (je-li pojmenovaná)
  ActiveCell.Name
  Selection.Name
Sub Main()
     MsgBox "Value: " & ActiveCell.Value & vbCrLf & _
         "Formula: " & ActiveCell.Formula & vbCrLf & _
         "FormulaR1C1: " & ActiveCell.FormulaR1C1 & vbCrLf & _
         "Address: " & ActiveCell.Address, , "ActiveCell"
End Sub
Procházení oblasti buněk
• Procházení neprázdných buněk ve sloupci přímým výběrem
   Do While ActiveCell.Value <> Empty
       [příkazy]
       ActiveCell.Offset(1,0).Select
   Loop
• Procházení neprázdných buněk v řádku bez změny aktivní buňky
   Dim Bunka As Range 'Deklarace pomocné proměnné
   Set Bunka = ActiveCell 'Přiřazení aktivní buňky
   Do While Bunka.Value <> Empty
       [příkazy]
       Set Bunka = Bunka.Offset(0,1)
   Loop
• Procházení vybrané oblasti buněk
   Dim Bunka As Range 'Deklarace pomocné proměnné
   For Each Bunka In Selection
       [příkazy]
   Next
Příklady procházení oblasti buněk
Sub ProchazejNeprazdneA()
    'Procházení neprázdných buněk ve sloupci přímým výběrem
    Do While ActiveCell.Value <> Empty
        ActiveCell.Formula = ">" & ActiveCell.Formula 'Požadovaná operace
        ActiveCell.Offset(1, 0).Select 'Přesun na další buňku
    Loop
End Sub

Sub ProchazejNeprazdneB()
    'Procházení neprázdných buněk v řádku bez změny aktivní buňky
    Dim Bunka As Range 'Deklarace pomocné proměnné
    Set Bunka = ActiveCell 'Přiřazení aktivní buňky
    Do While Bunka.Value <> Empty
        Bunka.Formula = ">" & Bunka.Formula 'Požadovaná operace
        Set Bunka = Bunka.Offset(0, 1) 'Přesun na další buňku
    Loop
End Sub

Sub ProchazejZvolenouOblast()
    'Procházení vybrané oblasti buněk
    Dim Bunka As Range 'Deklarace pomocné proměnné
    For Each Bunka In Selection
        Bunka.Formula = ">" & Bunka.Formula 'Požadovaná operace
    Next
End Sub
??? kontrolní otázky ???
• Kolikrát se provede cyklus For i = 1 To 10 Step -1 ?
• K čemu slouží příkaz Exit For?
• Jakou hodnotu musí mít výraz za While pro
  ukončení cyklu?
• Kdy nelze aplikovat cyklus s podmínkou na konci?
• Jaká je nevýhoda cyklu s podmínkou na začátku?
• Kdy nelze aplikovat cyklus s podmínkou uprostřed?
• Kdy se používá cyklus For Each ?
• Jakou buňku vybere příkaz
  Range("C4").Offset(-1,1) a
  ActiveCell.Offset(0,0)
• Je-li v aktivní buňce vzorec =10^2, jakou hodnotu
  vrátí
  ActiveCell.Value a ActiveCell.FormulaR1C1
352 - Katedra automatizační techniky a řízení




Ing. David Fojtík, Ph.D.
     A922, kl. 4193
  david.fojtik@vsb.cz

Mais conteúdo relacionado

Mais procurados

Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Jan Hřídel
 
KST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaKST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaJan Hřídel
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaJan Hřídel
 
KST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaKST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaJan Hřídel
 
Technické výpočty (kombinované studium)
Technické výpočty (kombinované studium)Technické výpočty (kombinované studium)
Technické výpočty (kombinované studium)352
 
Java – Annotations
Java – AnnotationsJava – Annotations
Java – AnnotationsMartin Majlis
 
Scala - jazyk budoucnosti
Scala - jazyk budoucnostiScala - jazyk budoucnosti
Scala - jazyk budoucnostiZdeněk Farana
 

Mais procurados (9)

Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#
 
KST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaKST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáška
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáška
 
KST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaKST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáška
 
Technické výpočty (kombinované studium)
Technické výpočty (kombinované studium)Technické výpočty (kombinované studium)
Technické výpočty (kombinované studium)
 
Linq
LinqLinq
Linq
 
Java – Annotations
Java – AnnotationsJava – Annotations
Java – Annotations
 
PR2021
PR2021PR2021
PR2021
 
Scala - jazyk budoucnosti
Scala - jazyk budoucnostiScala - jazyk budoucnosti
Scala - jazyk budoucnosti
 

Mais de 352

Ověření dat, maticové funkce, kontingenční tabulky
Ověření dat, maticové funkce, kontingenční tabulkyOvěření dat, maticové funkce, kontingenční tabulky
Ověření dat, maticové funkce, kontingenční tabulky352
 
Grafy, zobrazení, vzorce
Grafy, zobrazení, vzorceGrafy, zobrazení, vzorce
Grafy, zobrazení, vzorce352
 
Práce v prostředí aplikace MS Excel
Práce v prostředí aplikace MS ExcelPráce v prostředí aplikace MS Excel
Práce v prostředí aplikace MS Excel352
 
Tv 13
Tv 13Tv 13
Tv 13352
 
TV kombinovane studium
TV kombinovane studiumTV kombinovane studium
TV kombinovane studium352
 
Tv 04 2011
Tv 04 2011Tv 04 2011
Tv 04 2011352
 
TV 02 2011
TV 02 2011TV 02 2011
TV 02 2011352
 

Mais de 352 (7)

Ověření dat, maticové funkce, kontingenční tabulky
Ověření dat, maticové funkce, kontingenční tabulkyOvěření dat, maticové funkce, kontingenční tabulky
Ověření dat, maticové funkce, kontingenční tabulky
 
Grafy, zobrazení, vzorce
Grafy, zobrazení, vzorceGrafy, zobrazení, vzorce
Grafy, zobrazení, vzorce
 
Práce v prostředí aplikace MS Excel
Práce v prostředí aplikace MS ExcelPráce v prostředí aplikace MS Excel
Práce v prostředí aplikace MS Excel
 
Tv 13
Tv 13Tv 13
Tv 13
 
TV kombinovane studium
TV kombinovane studiumTV kombinovane studium
TV kombinovane studium
 
Tv 04 2011
Tv 04 2011Tv 04 2011
Tv 04 2011
 
TV 02 2011
TV 02 2011TV 02 2011
TV 02 2011
 

Tv 08

  • 1. 352 - Katedra automatizační techniky a řízení Technické výpočty Ing. David Fojtík, Ph.D. A922, kl. 4193
  • 2. Cykly - opakování činností
  • 3. Typy cyklů • Pod pojmem cyklus v souvislosti s algoritmizací rozumíme řídící strukturu (direktivu) programovacího jazyka, která zajišťuje opakování zvolené sekvence příkazů. • Cykly patří mezi základní stavební prvky algoritmů • Základní typy cyklů… • Inkrementační (přírůstkový) cyklus (For - Next) • Logické cykly (Do - Loop): • s podmínkou na začátku • s podmínkou na konci • s podmínkou uprostřed Levý Pravý krok krok • Cyklus procházení kolekcí (For Each - Next)
  • 4. Inkrementační cyklus For - Next • Syntaxe For počítadlo = počátek To konec [Step přírůstek] [příkazy] [If podmínka Then Exit For] 'tělo cyklu [příkazy] Next [počítadlo] i = počátek – Cyklus opakuje příkazy tolikrát, kolikrát se vejde přírůstek do intervalu <počátek;konec>. - Nepravda i ≤ konec – Přírůstek může být kladný i záporný, implicitně je roven jedné. + Pravda Není vhodné používat reálný typ. – Počítadlo se často v těle cyklu využívá Příkazy pozor však na modifikaci počítadla. – počátek, konec, přírůstek může být proměnná. i = i + přírůstek – Exit For ihned ukončí cyklus
  • 5. Příklad cyklus For-Next Sub Main() Dim Cislo As Integer 'Číselná hodnota pro výpočet faktoriálu Dim i As Integer 'Iterační pomocná proměnná Dim Faktorial As Double 'Výsledek výpočtu faktoriálu 'Nacteni hodnoty pro výpočet faktoriálu Cislo = InputBox("Zadej číslo:", "Výpočet Faktoriálu") 'Vlastní výpočet Faktorial = 1 '0! = 1 For i = CisloCislo Step -1 2 To To 2 Faktorial = i * Faktorial Next 'Výpis výsledku MsgBox Cislo & "! = " & Faktorial, , "Výpočet Faktoriálu" End Sub Při uživatelském vstupu For stene = 1 To 3 (datový typ variant) Nakrmit(stene) Next
  • 6. Logický cyklus Do-Loop s podmínkou na začátku • Syntaxe [příkazy inicializující podmínku] Do While Podmínka [příkazy] [If StopPodmínka Then Exit Do] 'tělo cyklu [příkazy] Loop – Cyklus opakuje příkazy tak dlouho, inicializace dokud je Podmínka pravdivá. podmínky – Podmínka je tvořena logickým výrazem. – Je-li Podmínka na počátku nepravdivá - Nepravda podmínka cyklus se nevykoná ani jednou. – Před cyklem se musí inicializovat + Pravda Podmínka a v těle cyklu se musí Příkazy podmínka ovlivňovat, v opačném (ovlivnění případě hrozí nekonečný cyklus. podmínky) – Exit Do ihned ukončí cyklus
  • 7. Logický cyklus Do-Loop s podmínkou na konci • Syntaxe Do [příkazy] [If StopPodmínka Then Exit Do] 'tělo cyklu [příkazy] Loop While Podmínka – Cyklus opakuje příkazy tak dlouho, dokud je Podmínka pravdivá. Příkazy (ovlivnění – Oproti cyklu s podmínkou na začátku podmínky) je obvykle kratší – ovlivnění podmínky je pouze v těle cyklu. + Pravda - Nepravda – Cyklus se vždy vykoná aspoň jednou. podmínka Tělo cyklu se na počátku vykoná aniž by byla podmínka splněna (omezené použití). – Exit Do ihned ukončí cyklus
  • 8. Logický cyklus Do-Loop s podmínkou uprostřed • Syntaxe Do [příkazy před podmínkou] If Podmínka Then Exit Do 'tělo cyklu [příkazy za podmínkou] Loop – Cyklus opakuje příkazy tak dlouho, Příkazy dokud je Podmínka nepravdivá. před podmínkou – Podmínka je tvořena logickým výrazem. – Příkazy před podmínkou se vždy + Pravda vykonají aspoň jednou. podmínka – V těle cyklu se musí podmínka - Nepravda ovlivňovat, v opačném případě hrozí nekonečný cyklus. Příkazy za podmínkou
  • 9. Příklady logických cyklů Sub Main() Sub Main() Dim Cislo As Long Dim Cislo As Long 'Aktuálně zadané číslo 'Aktuálně zadané číslo Dim Soucet As Long 'Celkový součet Dim Soucet As Long 'Celkový součet Do Cislo = InputBox("Zadej číslo:", "Sčítání...", 0) Do While Cislo <> 0 'Podmínka na začátku Do Cislo = InputBox("Zadej číslo:", "Sčítání...", 0) If Cislo ==0InputBox("Zadej číslo:", "Sčítání...", 0) Soucet = SoucetExit Do Cislo Then + Cislo 'Podmínka uprostřed Cislo = = Soucet + Cislo číslo:", "Sčítání...", 0) Soucet InputBox("Zadej Loop While Cislo <> 0 'Podmínka na konci Loop MsgBox "Součet všech zadaných čísel je: " & Soucet, , "Sčítání..." MsgBox "Součet všech zadaných čísel je: " & Soucet, , "Sčítání..." End Sub End Sub Jak na to? Do Zmrzlina > 0 Lízat Loop
  • 10. Další varianty cyklu Do-Loop • Zkrácená varianta s podmínkou na začátku [příkazy inicializující podmínku] While Podmínka [příkazy] Wend • Varianta s podmínkou na začátku s direktivou Until [příkazy inicializující podmínku] Do Until Podmínka [příkazy] Loop – Cyklus Until opakuje příkazy, dokud je Podmínka nepravdivá. • Varianta s podmínkou na konci s direktivou Until Do [příkazy] Loop Until Podmínka
  • 12. Kolekce • Pod pojmem kolekce v programovacím jazyce rozumíme skupinu shodných nebo příbuzných objektů tvořící celek. • Prvek (element, člen) kolekce je právě jeden dílčí objekt kolekce. • Samo osobě je kolekce objektem • Příklady kolekcí: – Přepravka (elementy: Láhve). – Vlak (elementy: Vagóny) – Čtvrť (elementy: Domy) – Knihovna (elementy: Knihy) – Studijní skupina (elementy: Studenti) • Kolekce v MS Excelu: – Workbooks (Workbook - Otevřené soubory) – WorkSheets (WorkSheet – Listy souboru) – Cells (Range – buňky listu) – Selection (Range – vybrané buňky)
  • 13. Procházení kolekcí: cyklus For Each • Syntaxe Jak na to? Dim Láhev As LáhvovéPivo Dim Element As TypElementuKolekce For Each Láhev In Přepravka Pít(Láhev) For Each Element in Kolekce Next [příkazy] [Zpracování elementu] [If podmínka Then Exit For] Next – Cyklus postupně projde všechny prvky kolekce a dočasně je přiřadí do proměnné Element. – Element musí být předem deklarován datovým typem shodným s prvky elementu. Sub Main() Dim Bunka As Range 'Deklarace pomocné proměnné For Each Bunka In Selection Bunka.Interior.Color = vbRed Next End Sub
  • 14. Práce s buňkami MS Excelu
  • 15. Výběr buňky • Aktuální buňka ActiveCell • Aktuální oblast Selection • Podle adresy buňky Range("C4") • Relativně vůči aktuální buňce/oblasti ActiveCell.Offset(r,s) Selection.Offset(r,s) r :posun na řádku, + dolů, - nahoru, 0 na místě s : posun na řádku, + do prava, - do leva, 0 na místě • Podle názvu (buňka/oblast musí být pojmenována) Range("Nazev") • Souvislá oblast buněk podle adresy oblasti Range("C4:E7") • Nesouvislá oblast buněk podle adresy oblasti Range("A1,C4:E7,F2:G5")
  • 16. Hodnota buňky • Hodnota buňky – výsledek vzorce ActiveCell.Value • Vzorec buňky v absolutních adresách ActiveCell.Formula • Vzorec buňky v relativní adresách ActiveCell.FormulaR1C1 • Adresa buňky/oblasti ActiveCell.Address Selection.Address • Název buňky/oblasti (je-li pojmenovaná) ActiveCell.Name Selection.Name Sub Main() MsgBox "Value: " & ActiveCell.Value & vbCrLf & _ "Formula: " & ActiveCell.Formula & vbCrLf & _ "FormulaR1C1: " & ActiveCell.FormulaR1C1 & vbCrLf & _ "Address: " & ActiveCell.Address, , "ActiveCell" End Sub
  • 17. Procházení oblasti buněk • Procházení neprázdných buněk ve sloupci přímým výběrem Do While ActiveCell.Value <> Empty [příkazy] ActiveCell.Offset(1,0).Select Loop • Procházení neprázdných buněk v řádku bez změny aktivní buňky Dim Bunka As Range 'Deklarace pomocné proměnné Set Bunka = ActiveCell 'Přiřazení aktivní buňky Do While Bunka.Value <> Empty [příkazy] Set Bunka = Bunka.Offset(0,1) Loop • Procházení vybrané oblasti buněk Dim Bunka As Range 'Deklarace pomocné proměnné For Each Bunka In Selection [příkazy] Next
  • 18. Příklady procházení oblasti buněk Sub ProchazejNeprazdneA() 'Procházení neprázdných buněk ve sloupci přímým výběrem Do While ActiveCell.Value <> Empty ActiveCell.Formula = ">" & ActiveCell.Formula 'Požadovaná operace ActiveCell.Offset(1, 0).Select 'Přesun na další buňku Loop End Sub Sub ProchazejNeprazdneB() 'Procházení neprázdných buněk v řádku bez změny aktivní buňky Dim Bunka As Range 'Deklarace pomocné proměnné Set Bunka = ActiveCell 'Přiřazení aktivní buňky Do While Bunka.Value <> Empty Bunka.Formula = ">" & Bunka.Formula 'Požadovaná operace Set Bunka = Bunka.Offset(0, 1) 'Přesun na další buňku Loop End Sub Sub ProchazejZvolenouOblast() 'Procházení vybrané oblasti buněk Dim Bunka As Range 'Deklarace pomocné proměnné For Each Bunka In Selection Bunka.Formula = ">" & Bunka.Formula 'Požadovaná operace Next End Sub
  • 19. ??? kontrolní otázky ??? • Kolikrát se provede cyklus For i = 1 To 10 Step -1 ? • K čemu slouží příkaz Exit For? • Jakou hodnotu musí mít výraz za While pro ukončení cyklu? • Kdy nelze aplikovat cyklus s podmínkou na konci? • Jaká je nevýhoda cyklu s podmínkou na začátku? • Kdy nelze aplikovat cyklus s podmínkou uprostřed? • Kdy se používá cyklus For Each ? • Jakou buňku vybere příkaz Range("C4").Offset(-1,1) a ActiveCell.Offset(0,0) • Je-li v aktivní buňce vzorec =10^2, jakou hodnotu vrátí ActiveCell.Value a ActiveCell.FormulaR1C1
  • 20. 352 - Katedra automatizační techniky a řízení Ing. David Fojtík, Ph.D. A922, kl. 4193 david.fojtik@vsb.cz