Anda dapat menggunakan fungsi Eval untuk mengevaluasi ekspresi yang menghasilkan string teks atau nilai numerik.
Anda dapat menyusun string lalu meneruskannya ke fungsi Eval seolah-olah string adalah ekspresi aktual. Fungsi Eval mengevaluasi ekspresi string dan mengembalikan nilainya. Misalnya, Eval("1 + 1") mengembalikan 2.
Jika Anda lolos ke fungsi Eval string yang berisi nama fungsi, fungsi Eval mengembalikan nilai kembali fungsi. Misalnya, Eval("Chr$(65)") mengembalikan "A".
Sintaks
Eval ( stringexpr )
Argumen stringexpr adalah ekspresi yang mengevaluasi ke string teks alfanumerik. Misalnya, stringexpr dapat berupa fungsi yang mengembalikan string atau nilai numerik. Atau bisa berupa referensi ke kontrol pada formulir. Argumen stringexpr harus dievaluasi ke string atau nilai numerik; tidak dapat mengevaluasi ke objek Microsoft Access.
Catatan: Contoh yang mengikuti demonstrasi penggunaan fungsi ini dalam modul Visual Basic for Applications (VBA). Untuk informasi selengkapnya tentang bekerja dengan VBA, pilih Referensi Pengembang di daftar turun bawah di samping Cari dan masukkan satu istilah atau lebih di kotak pencarian.
Catatan: Jika Anda meneruskan nama fungsi ke fungsi Eval , Anda harus menyertakan tanda kurung setelah nama fungsi dalam argumen stringexpr . Misalnya:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Keterangan
Anda dapat menggunakan fungsi Eval dalam kontrol terhitung pada formulir atau laporan, atau dalam makro atau modul. Fungsi Eval mengembalikan Varian yang berupa string atau tipe numerik.
Stringexpr argumen harus berupa ekspresi yang disimpan dalam string. Jika Anda meneruskan ke fungsi Eval , string yang tidak berisi ekspresi numerik atau nama fungsi tetapi hanya string teks sederhana, kesalahan durasi akan muncul. Misalnya, Eval("Smith") menghasilkan kesalahan.
Anda dapat menggunakan fungsi Eval untuk menentukan nilai yang disimpan dalam properti Nilai kontrol. Contoh berikut ini meneruskan string yang berisi referensi penuh ke kontrol ke fungsi Eval . Lalu menampilkan nilai kontrol saat ini dalam kotak 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))
Anda dapat menggunakan fungsi Eval untuk mengakses operator ekspresi yang biasanya tidak tersedia dalam modul Visual Basic for Applications (VBA). Misalnya, Anda tidak dapat menggunakan operator SQL Between... Dan atau In secara langsung dalam kode Anda, tetapi Anda bisa menggunakannya dalam ekspresi yang diteruskan ke fungsi Eval .
Contoh berikutnya menentukan apakah nilai kontrol ShipRegion pada formulir Pesanan adalah salah satu dari beberapa singkatan status tertentu. Jika bidang berisi salah satu singkatan, intState akan True (–1). Perhatikan bahwa Anda menggunakan tanda kutip tunggal (') untuk menyertakan string dalam string lain.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Contoh kueri
Ekspresi |
Hasil |
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); |
Mengevaluasi nilai string dan menghitung hasilnya. Hasil: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date()))"); |
Mengevaluasi nilai string, mengidentifikasi fungsi dan menjalankannya. Hasil: tanggal sistem saat ini + bulan saat ini, ditampilkan dalam kolom "TanggalData Baru". |
Contoh VBA
Contoh berikut mengasumsikan bahwa Anda memiliki serangkaian 50 fungsi yang ditetapkan sebagai A1, A2, dan seterusnya. Contoh ini menggunakan fungsi Eval untuk memanggil setiap fungsi dalam seri.
Sub CallSeries()
Dim intI As Integer For intI = 1 To 50 Eval("A" & intI & "()") Next intI End Sub
Contoh berikutnya memicu kejadian Klik seolah-olah pengguna telah mengklik tombol pada formulir. Jika nilai properti OnClick tombol dimulai dengan tanda sama dengan (=), menandakan bahwa itu adalah nama fungsi, fungsi Eval memanggil fungsi, yang setara dengan pemicu kejadian Klik . Jika nilai tidak dimulai dengan tanda sama dengan, maka nilai harus memberi nama makro. Metode RunMacro objek DoCmd menjalankan makro bernama.
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