Anda dapat menggunakan fungsi Eval untuk mengevaluasi ekspresi yang menghasilkan string teks atau nilai numerik.
Anda dapat membuat string lalu meneruskannya ke fungsi Eval seolah-olah string tersebut adalah ekspresi aktual.
Fungsi Eval mengevaluasi ekspresi string dan mengembalikan nilainya. Misalnya, Eval("1 + 1") mengembalikan 2.
Jika Anda meneruskan string yang berisi nama fungsi ke fungsi Eval , fungsi Eval mengembalikan nilai yang dikembalikan dari fungsi tersebut. Misalnya, Eval("Chr$(65)") mengembalikan "A".
Sintaks
Eval(stringexpr)
Argumen stringexpr adalah ekspresi yang mengevaluasi string teks alfanumerik. Misalnya, stringexpr dapat berupa fungsi yang mengembalikan string atau nilai numerik. Atau bisa berupa referensi untuk kontrol pada formulir. Argumen stringexpr harus mengevaluasi ke string atau nilai numerik; tidak dapat dievaluasi 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 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 merupakan tipe string atau numerik.
Argumen stringexpr harus berupa ekspresi yang disimpan dalam string. Jika Anda meneruskan string yang tidak berisi ekspresi numerik atau nama fungsi, tetapi hanya string teks sederhana, kesalahan run-time akan terjadi. Misalnya, Eval("Smith") mengakibatkan kesalahan.
Anda dapat menggunakan fungsi Eval untuk menentukan nilai yang disimpan dalam properti Value dari kontrol. Contoh berikut meneruskan string yang berisi referensi penuh ke kontrol ke fungsi Eval . Kemudian 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 di modul Visual Basic for Applications (VBA). Misalnya, Anda tidak dapat menggunakan operator SQL Antara... Dan atau In langsung dalam kode Anda, tetapi Anda dapat 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 yang ditentukan. Jika bidang berisi salah satu singkatan, intState akan menjadi 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 |
|---|---|
| PILIH Eval("15+3") SEBAGAI Expr1 DARI ProductSales GROUP BY Eval("15+3"); | Mengevaluasi nilai string dan menghitung hasilnya. Hasil: 18. |
| PILIH Eval("Tanggal()+bulan(tanggal())") SEBAGAI Tanggal BaruTanggal DARI ProductSales Group by Eval("Date()+month(date())"); | Mengevaluasi nilai string, mengidentifikasi fungsi dan menjalankannya. Hasil: tanggal sistem saat ini + bulan saat ini, ditampilkan di kolom "NewDate". |
Contoh VBA
Contoh berikut mengasumsikan bahwa Anda memiliki seri 50 fungsi yang ditentukan 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 (=), yang menandakan bahwa itu adalah nama fungsi, fungsi Eval memanggil fungsi tersebut, yang setara dengan memicu kejadian Klik . Jika nilai tidak dimulai dengan tanda sama dengan, nilai harus memberi nama makro. Metode RunMacro dari 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