zpět

Hlavní stránka

Poslední aktualizace: 2.10.2010

"Akční" funkce

Výsledkem je nějaká akce

Call - Volám makro

'Tato funkce volá nejake_makro, provede jej a vrátí se zpět do hlavního makra - programu

Syntaxe:  

Call nejake_makro

Příklad:

Call Vstupni_dialog

 

For .. To .. Step - Cyklus

'Tato funkce pracuje s cyklem, je definován začáteční hodnota, konečná hodnota a krok cyklu

Syntaxe:  

For začátek = číslo To konec = číslo Step krok = číslo 'záporná hodnota je při cyklu sestupném ( od 100 do 1)

tady se vykonává nějaká akce

Next začátek 'konec funkce (zpět na začátek)

Funkce běží v cyklu, dokud není naplněn stav To = ..., a nebo není použit příkaz Exit For

Příklad:

Sub For_To()
Dim A, B, C, D As Integer
Sheets("List1").Select
B = 1
C = 2
D = 2

For A = 10 To 1000 Step 10 'Cyklus - řada 10, 20, 30, 40 ...

If A < 110 Then
Cells(C, D) = B
'Cells(C, D) je adresa buňky ve formátu "RC", _
kde "C" definuje řádek a "D" sloupec
B = B + 1 'navýšení hodnoty, vzorec ...
C = C + 1 'o buňku dolů
D = D + 1 'o buňku doprava (max.255 - Excel má 256 sloupců !!!)
Else
Exit For 'opuštění cyklu
End If

Next A

'tady pokračuje pgm po ukončení, nebo opuštění cyklu

End Sub

 

InputBox - Vstupní dialog

'Tato funkce vyžádá vstup dat pomocí dialogu

Syntaxe:  

Výsledek = InputBox(Zpráva, Titulek_dialogu, Výchozí_hodnota, Posice_X , Posice_Y, "Nápověda.HLP", 10)

Příklad:

Sub Vstupni_dialog ()
Dim Vysledek, Zprava, Titulek_dialogu, Vychozi_hodnota, Posice_X , Posice_Y

Zprava = "Zadejte email"
Titulek_dialogu = "Toto je titulek Vstupního dialogu"
Vychozi_hodnota = "@"
Posice_X = 1000: Posice_Y = 2000 'posice okna shora, zleva v pixelex
'Napoveda.HLP je název souboru nápovědy ve stejné složce, hodnota 10 je index nápovědy

Vysledek = InputBox(Zprava, Titulek_dialogu, Vychozi_hodnota, Posice_X , Posice_Y)

End Sub

 

MsgBox - Výstupní dialog

'Tato funkce vyvolá dialog s hlášením

Poznámka:

Pokud nevíte co dělají znaky "&" a "vbCrLf " podívejte se sem

Syntaxe:  

Výsledek = MsgBox (Zpráva, tlačítka_a_prvky, Titulek_dialogu,  nápověda, kontext nápovědy)

Tlačítka a prvky fce Msgbox:

Každý prvek této funkce má svojí hodnotu, při kombinaci prvků se tyto hodnoty sečtou,
a výsledný součet definuje kombinaci tlačítek.
Hodnota prvku je definována tak, že nemůže součtem dojít k záměně prvků.

Prvek

Hodnota

  Popis

vbOKOnly 0 Zobrazí OK tlačítko only.
vbOKCancel 1 Zobrazí OK a Storno tlačítka.
vbAbortRetryIgnore 2 Zobrazí tlačítka Přerušit, Opakovat, a Přeskočit .
vbYesNoCancel 3 Zobrazí tlačítka Ano, Ne, a Storno.
vbYesNo 4 Zobrazí tlačítka Ano a Ne .
vbRetryCancel 5 Zobrazí tlačítka Opakovat a Storno.
vbCritical 16 Zobrazí Zákazovou ikonu.
vbQuestion 32 Zobrazí ikonu Otazník.
vbExclamation 48 Zobrazí ikonu Vykřičník.
vbInformation 64 Zobrazí Informativní ikonu.
vbDefaultTlačítko1 0 První tlačítko je aktivní (je na něm focus).
vbDefaultTlačítko2 256 Druhé tlačítko je aktivní (je na něm focus).
vbDefaultTlačítko3 512 Třetí tlačítko je aktivní (je na něm focus).
vbDefaultTlačítko4 768 Čtvrté tlačítko je aktivní (je na něm focus).
vbApplicationModal 0 Uživatel musí nejprve odpovědět na okno zprávy,
až poté může pokračovat v práci s aktuálně otevřenou aplikací (Excelem).
vbSystemModal 4096 Všechny aplikace jsou pozastaveny dokud uživatel neodpoví na zprávu.
vbMsgBoxHelpButton 16384 Vloží na dialog tlačítko Nápověda
VbMsgBoxSetForeground 65536 Určuje okno se zprávou, jako okno, které je v popředí.
vbMsgBoxRight 524288 Text má zarovnání doprava
vbMsgBoxRtlReading 1048576 Speciální zápis textu na dialogu ve stylu 
Hebrejského a Arabského systému čtení z prava do leva.

 

Ještě jednou syntaxe: 
Výsledek = MsgBox (Zpráva, tlačítka_a_prvky, Titulek_dialogu,  nápověda, kontext nápovědy)

Takže pokud chceme mít na dialogu tlačítka Ano, Ne, a Zrušit a symbol Informativní,
potom hodnota tlačítka_a_prvky bude:

tlačítka_a_prvky = vbYesNoCancel+vbInformation 'to se rovná 67

nebo:


tlačítka_a_prvky = 67

Příklad:

Sub Vystupni_dialog ()
Dim Vysledek, Zprava, Vstup, tlacitka_a_prvky, Titulek_dialogu

Vstup = "info@slezak-petr.cz"
Zprava = "Váš email je:" & vbCrLf  & Vstup
Titulek_dialogu = "Toto je titulek Výstupního dialogu"
tlačítka_a_prvky = vbYesNoCancel+vbInformation 'to se rovná 67

Vysledek = MsgBox (Zprava, tlačítka_a_prvky, Titulek_dialogu)

End Sub

Tato funkce vrací výslednou hodnotu na základě volby tlačítka

Prvek

Hodnota

Popis

vbOK 1 OK
vbCancel 2 Storno
vbAbort 3 Přerušit
vbRetry 4 Obnovit
vbIgnore 5 Ignorovat
vbYes 6 Ano
vbNo 7 Ne

V případě stisku tlačítka OK je výsledkem syntaxe:
Vysledek = vbOK nebo Vysledek = 1
To znamená, že na základě odpovědi uživatele můžete pomocí dalších funkcí větvit program:

Příklad:

Sub Vystupni_dialog2 ()
Dim Vysledek, Zprava, Vstup, tlacitka_a_prvky, Titulek_dialogu

Vstup = "info@slezak-petr.cz"
Zprava = "Váš email je:" & vbCrLf  & Vstup
Titulek_dialogu = "Toto je titulek Výstupního dialogu"
tlačítka_a_prvky = vbYesNoCancel+vbInformation 'to se rovná 67

Vysledek = MsgBox (Zprava, tlačítka_a_prvky, Titulek_dialogu)

Select Case Vysledek
          Case vbYes                                                    'stejné jako Case 6
                   MsgBox "Bylo vybráno tlačítko ANO"
          Case vbNo                                                    'stejné jako Case 7
                   MsgBox "Bylo vybráno tlačítko NE"
          Case vbCancel                                               'stejné jako Case 2
                   MsgBox "Bylo vybráno tlačítko STORNO"
End Select

End Sub

Poznámka:

Funkci MsgBox často používám k ladění programu, když něco nefunguje, a chci zjistit, kde je problém.
Pak napíšu kód, abych si zobrazil názvy konstant a jejich hodnoty.

Zde je příklad kde jsou tyto možnosti více rozebrány ...

Debug.Print

Toto není funkce, ale příkaz:

Syntaxe: 

Debug.Print neco_vypsat

Tento příkaz vypíše Hodnotu do okna Immediate window
pro zobrazení
tohoto okna je volba View / Immediate window, nebo klávesová zkratka CTRL+G
Okno se nachází vpravo dole pod hlavním oknem.

Příklad:

Sub immediate_okno()
Moje_promenna = "Nějaký text"
Debug.Print Moje_promenna 

Moje_cislo = 5
Debug.Print Moje_cislo 

End Sub