Funkci Eval můžete použít k vyhodnocení Výraz jehož výsledkem je textový řetězec nebo číselná hodnota.

Můžete vytvořit řetězec a předat ho funkci Eval, jako by byl skutečný výraz. Funkce Eval vyhodnotí Řetězcový výraz a vrátí jeho hodnotu. Například vrátí Eval("1 + 1") hodnotu 2.

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

Syntaxe

Eval ( stringexpr )

Argument stringexpr je výraz, jehož výsledkem je alfanumerický textový řetězec. Například stringexpr může být funkce, která vrací řetězec nebo číselnou hodnotu. Nebo to může být odkaz na Ovládací prvek formuláři. Argument stringexpr musí být vyhodnocen jako řetězcová nebo číselná hodnota. nemůže vyhodnotit jako 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: Pokud předáváte název funkce funkci Eval, musíte za název funkce zahrnout závorky v argumentu stringexpr. Pří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 můžete použít v Vypočítaný ovládací prvek formuláři nebo sestavě nebo v makru nebo modulu. Funkce Eval vrátí variantu, která je buď řetězcem, nebo číselným typem.

Argument stringexpr musí být výraz, který je uložený v řetězci. Pokud funkci Eval předáte řetězec, který neobsahuje číselný výraz nebo název funkce, ale jenom jednoduchý textový řetězec, dojde k Chyba za běhu. Výsledkem Eval("Smith") chyba.

Pomocí funkce Eval můžete určit hodnotu uloženou ve vlastnosti Value ovládacího prvku. Následující příklad předává řetězec obsahující celý odkaz na ovládací prvek funkce Eval. Potom zobrazí aktuální hodnotu 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))

Funkci Eval můžete použít pro přístup k operátorům výrazů, které nejsou obvykle dostupné v modulu Visual Basic for Applications (VBA). Nemůžete například použít operátory SQL Between... A nebo In přímo v kódu, ale můžete je použít ve výrazu předaly funkci Eval.

Další příklad určuje, jestli je hodnota ovládacího prvku OblastPříjemce na formuláři Objednávky jednou z několika zadaných zkratek státu. Pokud pole obsahuje jednu z těchto zkratek, bude mít intState hodnotu Pravda (–1). Všimněte si, že do jiného řetězce můžete zahrnout řetězec pomocí jednoduchých uvozovek (').

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

Příklady dotazů

Výraz

Výsledky

SELECT Eval("15+3") AS Výraz1 FROM ProductSales GROUP BY Eval("15+3");

Vyhodnotí řetězcovou hodnotu a vypočítá výsledek. Výsledek: 18.

SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())");

Vyhodnotí hodnotu řetězce, identifikuje funkce a spouští je. Výsledek: Aktuální systémové datum + aktuální měsíc, zobrazené ve sloupci NovýDne.

Příklady jazyka VBA

V následujícím příkladu se předpokládá, že máte řadu 50 funkcí definovaných jako A1, A2 atd. V tomto příkladu se funkce Eval používá k volání jednotlivých funkcí v řadě.

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

V dalším příkladu se spustí událost Kliknutí, jako by uživatel klikl na tlačítko ve formuláři. Pokud hodnota vlastnosti OnClick tlačítka začíná znakem rovnítku (=), znamená to, že je to název funkce, zavolá funkce Eval funkci, která je ekvivalentní spuštění události Click. Pokud hodnota nezačíná znakem rovnítku, musí tato hodnota makro pojmnovat. Metoda RunMacro objektu DoCmd spustí pojmenované 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

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou překladu?

Co ovlivnilo váš názor?

Máte další zpětnou vazbu? (Nepovinné)

Děkujeme za váš názor!

×