Funkcia Eval

Pomocou funkcie Eval môžete vyhodnotiť výraz, ktorého výsledkom je textový reťazec alebo číselná hodnota.

Môžete vytvoriť reťazec a potom ho zadať do funkcie Eval, ako keby bol tento reťazec skutočným výrazom. Funkcia Eval tento reťazcový výraz vyhodnotí a vráti jeho hodnotu. Napríklad funkcia Eval("1 + 1") vráti hodnotu 2.

Ak do funkcie Eval zadáte reťazec, ktorý obsahuje názov funkcie, funkcia Eval vráti vrátenú hodnotu funkcie. Napríklad funkcia Eval("Chr$(65)") vráti hodnotu A.

Syntax

Eval ( reťazecvýrazu )

Argument stringexpr je výraz, ktorý sa vyhodnotí ako alfanumerický textový reťazec. Stringexpr môže byť napríklad funkciou, ktorá vracia reťazec alebo číselnú hodnotu. Môže to byť odkaz na ovládací prvok vo formulári. Argument stringexpr musí vyhodnotiť reťazec alebo číselnú hodnotu. Nedá sa vyhodnotiť na objekt Microsoft Accessu.

Poznámka: Nasledujúce príklady ukazujú použitie tejto funkcie v module jazyka Visual Basic for Applications (VBA). Ak chcete získať ďalšie informácie o práci s jazykom VBA, vyberte z rozbaľovacieho zoznamu vedľa položky Hľadať možnosť Odkaz pre vývojára a do vyhľadávacieho poľa zadajte nejaké výrazy.

Poznámka: Ak do funkcie Eval zadávate názov funkcie, v argumente je za názov funkcie potrebné zadať zátvorky. Príklad:

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

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

Debug.Print Eval("Date()")

Poznámky

Môžete použiť funkciu eval v vypočítavaný ovládací prvok formulára alebo zostavy, alebo v makre alebo module. Funkcia eval vráti hodnotu typu variant, ktorá je buď reťazec alebo číselný typ.

Argument musí byť výraz, ktorý je uložený v reťazci. Ak do funkcie Eval zadáte reťazec, ktorý neobsahuje číselný výraz alebo názov funkcie, ale iba jednoduchý textový reťazec, vyskytne sa chyba počas spustenia. Napríklad funkcia Eval("Smith") spôsobí chybu.

Pomocou funkcie Eval môžete určiť hodnotu uloženú vo vlastnosti Value ovládacieho prvku. V nasledujúcom príklade je do funkcie Eval zadaný reťazec, ktorý obsahuje úplný odkaz na ovládací prvok. Funkcia potom zobrazí aktuálnu hodnotu ovládacieho prvku v dialógovom okne.

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))

Funkciu Eval môžete použiť na získanie prístupu k operátorom výrazov, ktoré nie sú bežne k dispozícii v module programu Visual Basic for Applications (VBA). Napríklad operátory SQL Between...And alebo In nemožno použiť priamo v kóde, môžete ich však použiť vo výraze zadanom do funkcie Eval.

Nasledujúci príklad určuje, či je hodnota ovládacieho prvku ShipRegion vo formulári Orders jednou z viacerých zadaných skratiek štátov. Ak pole obsahuje jednu zo skratiek, intState bude mať hodnotu True (–1). Všimnite si, že na zahrnutie reťazca do ďalšieho reťazca sa používajú jednoduché úvodzovky (').

Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Príklady dotazov

Výraz

Výsledky

Vyberte eval ("15 + 3") ako Expr1 FROM ProductSales GROUP BY eval ("15 + 3");

Vyhodnotí hodnotu reťazca a vypočíta výsledok. Výsledok: 18.

Vyberte eval ("Date () + Month (Date ())") ako NewDate FROM ProductSales Group by eval ("Date () + mesiac (dátum ())");

Vyhodnotí hodnotu reťazca, identifikuje funkcie a vykoná ich. Výsledok: aktuálny systémový dátum + aktuálny mesiac, ktorý sa zobrazuje v stĺpci "NewDate".

Príklady jazyka VBA

Nasledujúci príklad vychádza z predpokladu, že máte rad 50 funkcií definovaných ako A1, A2 atď. V tomto príklade je funkcia Eval použitá na vyvolanie jednotlivých funkcií v rade.

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

V nasledujúcom príklade sa spúšťa udalosť Kliknutie, ako keby používateľ klikol na tlačidlo vo formulári. Ak sa hodnota vlastnosti OnClick tlačidla začína znakom rovnosti (=), ktorý označuje, že ide o názov funkcie, funkcia Eval vyvolá funkciu, čo zodpovedá spusteniu udalosti Kliknutie. Ak sa hodnota nezačína znakom rovnosti, potom musí pomenúvať makro. Metóda RunMacro objektu DoCmd spúšťa pomenované makro.

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:  Táto stránka bola preložená automaticky a môže obsahovať gramatické chyby alebo nepresnosti. Naším cieľom je, aby bol tento obsah pre vás užitočný. Môžete nám dať vedieť, či boli tieto informácie pre vás užitočné? Tu nájdete anglický článok ako referenciu.

Rozšírte svoje zručnosti práce s balíkom Office
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pridajte sa k insiderom pre Office