Funkce Eval

Důležité :  Tento článek je strojově přeložený – přečtěte si toto upozornění. Anglickou verzi tohoto článku pro referenci najdete tady.

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 ukazují použití této funkce v modulu VBA (Visual Basic pro Applications). Pokud chcete další informace o práci s modulem VBA, vyberte Referenční informace pro vývojáře, které najdete v rozevíracím seznamu vedle položky Hledat a do vyhledávacího pole napište požadované pojmy.

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

Funkce Eval v Vypočítaný ovládací prvek ve formuláři nebo sestavě nebo makra nebo modulu. Funkce Eval vrátí varianty, která je řetězec nebo číselný typ.

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!Employees!LastName
strCtl = "Forms!Employees!LastName"
MsgBox ("The current value of " & 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!Orders!ShipRegion In " _
& "('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

Poznámka : Upozornění ke strojovému překladu: Tento článek přeložil počítačový systém bez zásahu člověka. Společnost Microsoft nabízí tyto strojové překlady proto, aby umožnila uživatelům, kteří nemluví anglicky, získat informace o produktech, službách a technologiích této společnosti. Protože je tento článek strojově přeložený, může obsahovat slovní, syntaktické nebo gramatické chyby.

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.

×