Bir metin dizesi veya sayısal değerle sonuçlayan bir ifade değerlendirmek için Eval işlevini kullanabilirsiniz.
Bir dize oluşturabilir ve ardından dize gerçek bir ifadeymiş gibi Eval işlevine geçirebilirsiniz. Değerlendirme işlevi dize ifadesi değerlendirir ve değerini döndürür. Örneğin, Eval("1 + 1") 2 döndürür.
Eval işlevine bir işlevin adını içeren bir dize geçirirseniz, Eval işlevi işlevin dönüş değerini döndürür. Örneğin, Eval("Chr$(65)") "A" döndürür.
Söz dizimi
Eval ( stringexpr )
stringexpr bağımsız değişkeni, alfasayısal metin dizesi olarak değerlendirilen bir ifadedir. Örneğin, stringexpr bir dize veya sayısal değer döndüren bir işlev olabilir. Ya da formdaki bir denetim başvuru olabilir. stringexpr bağımsız değişkeni bir dize veya sayısal değer olarak değerlendirilmelidir; bir Microsoft Access nesnesi olarak değerlendiremez.
Not: Aşağıdaki örneklerde, bu işlevin Visual Basic for Applications (VBA) modülünde kullanımı gösterilir. VBA ile çalışma hakkında daha fazla bilgi için, rama'nın yanındaki açılan listede Geliştirici Başvurusu'nu seçin ve arama kutusuna bir veya birden çok terim yazın.
Not: Bir işlevin adını Eval işlevine geçiriyorsanız, stringexpr bağımsız değişkenine işlevin adından sonra parantezler eklemeniz gerekir. Örneğin:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Açıklamalar
Eval işlevini bir form veya rapordaki hesaplanmış denetim ya da makro ya da modülde kullanabilirsiniz. Değerlendirme işlevi, dize veya sayısal tür olan bir Değişken döndürür.
stringexpr bağımsız değişkeni bir dizede depolanan bir ifade olmalıdır. Eval işlevine sayısal ifade veya işlev adı içermeyen ancak yalnızca basit bir metin dizesi içeren bir dize geçirirseniz, bir çalıştırma hatası oluşur. Örneğin, Eval("Smith") bir hatayla sonuçlanır.
Bir denetimin Value özelliğinde depolanan değeri belirlemek için Eval işlevini kullanabilirsiniz. Aşağıdaki örnek, Bir denetime tam başvuru içeren bir dizeyi Eval işlevine geçirir. Ardından denetimin geçerli değerini bir iletişim kutusunda görüntüler.
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))
Normalde bir Visual Basic for Applications (VBA) modülünde bulunmayan ifade işleçlerine erişmek için Eval işlevini kullanabilirsiniz. Örneğin, sql işleçlerini kullanamazsınız . Ve veya In doğrudan kodunuz içinde, ancak bunları Eval işlevine geçirilen bir ifadede kullanabilirsiniz.
Sonraki örnek, Siparişler formundaki ShipRegion denetiminin değerinin belirtilen çeşitli durum kısaltmalarından biri olup olmadığını belirler. Alanda kısaltmalardan biri varsa, intStateTrue (–1) olur. Başka bir dizeye dize eklemek için tek tırnak işareti (') kullandığınızı unutmayın.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Sorgu örnekleri
Expression |
Sonuçlar |
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); |
Dize değerini değerlendirir ve sonucu hesaplar. Sonuç: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Dize değerini değerlendirir, işlevleri tanımlar ve yürütür. Sonuç: "YeniTarih" sütununda görüntülenen geçerli sistem tarihi + geçerli ay. |
VBA örnekleri
Aşağıdaki örnekte, A1, A2 vb. olarak tanımlanan 50 işlevden oluşan bir seriniz olduğu varsayılır. Bu örnek, serideki her işlevi çağırmak için Eval işlevini kullanır.
Sub CallSeries()
Dim intI As Integer For intI = 1 To 50 Eval("A" & intI & "()") Next intI End Sub
Sonraki örnek, kullanıcı formdaki bir düğmeye tıklamış gibi bir Click olayını tetikler. Düğmenin OnClick özelliğinin değeri bir işlevin adı olduğunu belirten eşittir işaretiyle (=) başlıyorsa, Eval işlevi işlevi çağırır ve bu da Click olayını tetiklemeyle eşdeğerdir. Değer eşittir işaretiyle başlamıyorsa, değerin makroyu adlandırması gerekir. DoCmd nesnesinin RunMacro yöntemi adlandırılmış makroyu çalıştırır.
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