Puteți utiliza funcția Eval pentru a evalua o expresie care are ca rezultat un șir text sau o valoare numerică.
Puteți să construiți un șir și apoi să-l transmiteți funcției Evaluare ca și cum șirul ar fi o expresie reală. Funcția Eval evaluează expresie șir și îi returnează valoarea. De exemplu, Eval("1 + 1") returnează 2.
Dacă treceți la funcția Eval un șir care conține numele unei funcții, funcția Eval returnează valoarea returnată a funcției. De exemplu, Eval("Chr$(65)") returnează "A".
Sintaxă
Eval ( stringexpr )
Argumentul stringexpr este o expresie care se evaluează la un șir text alfanumeric. De exemplu, stringexpr poate fi o funcție care returnează un șir sau o valoare numerică. Sau poate fi o referință la un control dintr-un formular. Argumentul stringexpr trebuie să se evalueze la un șir sau la o valoare numerică; nu se poate evalua la un Obiect Microsoft Access.
Notă: Exemplele care urmează demonstrează utilizarea acestei funcții într-un modul Visual Basic for Applications (VBA). Pentru mai multe informații despre lucrul cu VBA, selectați Referințe pentru dezvoltatori în lista verticală de lângă Căutare și introduceți unul sau mai mulți termeni în caseta de căutare.
Notă: Dacă transmiteți numele unei funcții funcției Eval , trebuie să includeți paranteze după numele funcției în argumentul stringexpr . De exemplu:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Observații
Puteți utiliza funcția Eval într-un control calculat dintr-un formular sau raport sau într-o macrocomandă sau într-un modul. Funcția Eval returnează o valoare Variant care este un șir sau un tip numeric.
Stringexpr argument trebuie să fie o expresie stocată într-un șir. Dacă treceți la funcția Eval un șir care nu conține o expresie numerică sau un nume de funcție, ci doar un șir text simplu, apare o eroare la momentul rulării. De exemplu, Eval("Smith") are ca rezultat o eroare.
Puteți utiliza funcția Eval pentru a determina valoarea stocată în proprietatea Valoare a unui control. Următorul exemplu transmite un șir care conține o referință completă la un control pentru funcția Eval . Apoi afișează valoarea curentă a controlului într-o casetă de dialog.
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))
Puteți utiliza funcția Eval pentru a accesa operatori de expresii care nu sunt disponibili de obicei într-un modul Visual Basic for Applications (VBA). De exemplu, nu puteți utiliza operatorii SQL Între... Și sau În direct în codul dvs., dar le puteți utiliza într-o expresie transmisă funcției Eval .
Următorul exemplu determină dacă valoarea unui control ShipRegion dintr-un formular Comenzi este una dintre abrevierile de stare specificate. În cazul în care câmpul conține una dintre abrevieri, intState va fi True (–1). Rețineți că utilizați ghilimele simple (') pentru a include un șir într-un alt șir.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Exemple de interogare
Expresie |
Rezultatele |
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); |
Evaluează valoarea șirului și calculează rezultatul. Rezultat: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Evaluează valoarea șirului, identifică funcțiile și le execută. Rezultat: data curentă a sistemului + luna curentă, afișată în coloana "NewDate". |
Exemple VBA
Următorul exemplu presupune că aveți o serie de 50 de funcții definite ca A1, A2 și așa mai departe. Acest exemplu utilizează funcția Eval pentru a apela fiecare funcție din serie.
Sub CallSeries()
Dim intI As Integer For intI = 1 To 50 Eval("A" & intI & "()") Next intI End Sub
Următorul exemplu declanșează un eveniment Clic ca și cum utilizatorul ar fi făcut clic pe un buton dintr-un formular. Dacă valoarea proprietății OnClick a butonului începe cu semnul egal (=), indicând faptul că aceasta este numele unei funcții, funcția Eval apelează funcția, ceea ce este echivalent cu declanșarea evenimentului Click . Dacă valoarea nu începe cu semnul egal, valoarea trebuie să denumiți o macrocomandă. Metoda RulareMacrocomanda obiectului DoCmd rulează macrocomanda denumită.
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