"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
'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 ...
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
|