Funkce Eval

Funkce Eval slouží k vyhodnocení Výraz. Výsledkem je textový řetězec nebo číselná hodnota.

Lze vytvořit řetězec a ten potom předat funkci Eval, jako by šlo o skutečný výraz. Funkce EvalŘetězcový výraz vyhodnotí a vrátí jeho hodnotu. Například řetězec Eval("1 + 1") vrátí hodnotu 2.

Pokud předáte funkci Eval řetězec, který obsahuje název funkce, vrátí funkce Eval vrácenou hodnotu dané funkce. Například řetězec Eval("Chr$(65)") vrátí hodnotu A.

Syntaxe

Eval(řetězcový výraz)

Argument řetězcový výraz je výraz, jehož výsledkem je alfanumerický textový řetězec. Argument řetězcový výraz může být například funkce, která vrátí řetězec nebo číselnou hodnotu. Může se také jednat o Ovládací prvek ve formuláři. Výsledkem argumentu řetězcový výraz musí být řetězec nebo číselná hodnota, nikoli Objekt Microsoft Access.

Poznámka : Následující příklady uvádějí použití této funkce v modulu jazyka Visual Basic for Applications (VBA). Další informace o práci s jazykem VBA získáte tak, že kliknete na položku Referenční informace pro vývojáře v rozevíracím seznamu vedle pole Hledat a do pole pro hledání zadáte jeden nebo více pojmů.

Poznámka : Předáte-li funkci Eval název funkce, je nutné jej v argumentu řetězcový výraz uzavřít do závorek. Například:

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Poznámky

Funkci Eval lze použít ve Vypočítaný ovládací prvek ve formuláři nebo v sestavě, v makru nebo v modulu. Funkce Eval vrátí hodnotu Datový typ Variant, která je buď řetězec nebo číselná hodnota.

Argument řetězcový výraz musí být výraz uložený v řetězci. Předáte-li funkci Eval řetězec, který neobsahuje číselný výraz nebo název funkce, ale pouze jednoduchý textový řetězec, dojde k Chyba za běhu. Například řetězec Eval("Smith") vrátí chybu.

Funkci Eval lze použít k určení hodnoty, která je uložena ve vlastnosti Hodnota ovládacího prvku. V následujícím příkladu je funkci Eval předán řetězec obsahující úplný odkaz na ovládací prvek. Funkce potom zobrazí aktuální hodnotu daného ovládacího prvku v dialogovém okně.

Dim ctl As Control
Dim strCtl As String
Set ctl = Forms!Zaměstnanci!Příjmení
strCtl = "Forms!Zaměstnanci!Příjmení"
MsgBox ("Aktuální hodnota" & ctl.Name & _
" is " & Eval(strCtl))

Pomocí funkce Eval lze získat přístup k operátorům výrazů, které nejsou v modulu Visual Basic for Applications (VBA) běžně k dispozici. Například operátory jazyka SQL Between...And nebo In nelze použít přímo v kódu, ale lze je použít ve výrazu předaném funkci Eval.

Následující příklad určuje, zda je hodnota ovládacího prvku RegionPříjemce ve formuláři Objednávky jednou z několika zadaných zkratek států. Pokud pole některou ze zkratek obsahuje, bude pro řetězec intState vrácena hodnota True (–1). Nezapomeňte, že řetězec vložený do jiného řetězce musí být uzavřen v jednoduchých uvozovkách (').

Dim intState As Integer
intState = Eval("Forms!Objednávky!RegionPříjemce v " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Příklad

Následující příklad předpokládá, že je k dispozici řada funkcí definovaných jako funkce A1, A2 atd. V tomto příkladu je funkce Eval použita k volání jednotlivých funkcí v dané řadě.

Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub

V dalším příkladu je spuštěna událost Click, jako by uživatel klepnul na tlačítko ve formuláři. Pokud hodnota vlastnosti OnClick tlačítka začíná znaménkem rovná se (=), které označuje, že se jedná o název funkce, volá funkce Eval danou funkci, což je ekvivalentem spuštění události Click. Pokud hodnota nezačíná znaménkem rovná se, musí být hodnota názvem makra. Metoda RunMacro objektu DoCmd spustí makro s daným názvem.

Dim ctl As Control
Dim varTemp As Variant
Set ctl = Forms!Contacts!HelpButton
If (Left(ctl.OnClick, 1) = "=") Then
varTemp = Eval(Mid(ctl.OnClick,2))
Else
DoCmd.RunMacro ctl.OnClick
End If
Sdílení Facebook Facebook Twitter Twitter E-mail E-mail

Byly tyto informace užitečné?

Výborně! Je ještě něco dalšího, co byste nám chtěli dát vědět?

Jak bychom ho mohli vylepšit?

Děkujeme vám za zpětnou vazbu.

×