ฟังก์ชัน Eval

สิ่งสำคัญ:  บทความนี้เป็นการแปลด้วยเครื่อง โปรดดู ข้อจำกัดความรับผิดชอบ โปรดดูบทความฉบับภาษาอังกฤษ ที่นี่ เพื่อใช้อ้างอิง

คุณสามารถใช้ฟังก์ชันEvalเมื่อต้องการประเมินความนิพจน์ ที่เป็นผลลัพธ์ในสตริงข้อความหรือค่าตัวเลข

คุณสามารถสร้างสตริงที่แล้ว ส่งผ่านนั้นไปยังฟังก์ชันEvalว่าสตริถูกนิพจน์จริง ฟังก์ชันEvalประเมินนิพจน์สตริง และส่งกลับค่า ตัวอย่างเช่นEval("1 + 1")ส่งกลับ 2

ถ้าคุณส่งไปยังฟังก์ชันEvalสตริงที่ประกอบด้วยชื่อของฟังก์ชัน ฟังก์ชันEvalส่งกลับค่าส่งกลับของฟังก์ชัน ตัวอย่างเช่นEval("Chr$(65)")ส่งกลับ "A"

ไวยากรณ์

Eval (ลบstringexpr)

อาร์กิวเมนต์stringexprคือนิพจน์ที่ประเมินเป็นสตริงข้อความพยัญชนะผสมตัวเลข ตัวอย่างเช่นstringexprอาจเป็นฟังก์ชันที่ส่งกลับสตริงที่หรือค่าตัวเลข หรืออาจเป็นการอ้างอิงถึงตัวควบคุม บนฟอร์ม อาร์กิวเมนต์stringexprต้องประเมินเป็นสตริงที่หรือค่าตัวเลข จะไม่สามารถประเมินเป็นแบบวัตถุ Microsoft Access

หมายเหตุ: ตัวอย่างที่ติดตามสาธิตการใช้ฟังก์ชันนี้ใน Visual Basic for Applications (VBA) มอดูล สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับ VBA เลือกอ้างอิงสำหรับนักพัฒนา ในรายการดรอปดาวน์ถัดจากค้นหา และใส่เงื่อนไขอย่าง น้อยหนึ่งในกล่องค้นหา

หมายเหตุ: ถ้าคุณกำลังส่งผ่านชื่อของฟังก์ชันไปยังฟังก์ชันEvalคุณต้องใส่วงเล็บหลังชื่อฟังก์ชันในอาร์กิวเมนต์stringexpr ตัวอย่าง:

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

ข้อสังเกต

คุณสามารถใช้ฟังก์ชันEvalในแบบตัวควบคุมที่มีการคำนวณ บนฟอร์มหรือรายงาน หรือ ในแมโครหรือมอดูล ฟังก์ชันEvalจะส่งกลับตัวโทนสีที่มีชนิดตัวเลขหรือสตริงข้อความ

อาร์กิวเมนต์stringexprต้องนิพจน์ที่ถูกเก็บไว้ในสตริงข้อความ ถ้าคุณส่งไปยังฟังก์ชันEvalสตริงที่ไม่ประกอบด้วยนิพจน์ตัวเลข หรือชื่อฟังก์ชัน แต่เฉพาะในสตริงข้อความอย่างง่ายข้อผิดพลาดขณะทำงาน เกิดขึ้น ตัวอย่างเช่นEval("Smith")ผลลัพธ์เป็นข้อผิดพลาด

คุณสามารถใช้ฟังก์ชันEvalเพื่อกำหนดค่าเก็บไว้ในคุณสมบัติค่าของตัวควบคุม ตัวอย่างต่อไปนี้ส่งผ่านสตริงที่ประกอบด้วยการอ้างอิงทั้งหมดลงในตัวควบคุมฟังก์ชันEval นั้นแล้วแสดงค่าปัจจุบันของตัวควบคุมในกล่องโต้ตอบ

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))

คุณสามารถใช้ฟังก์ชันEvalเพื่อเข้าถึงตัวดำเนินการนิพจน์ที่ไม่มีอยู่โดยปกติใน Visual Basic for Applications (VBA) มอดูล ตัวอย่างเช่น คุณไม่สามารถใช้ตัวดำเนินการ SQLระหว่าง... และหรือในได้โดยตรงในโค้ดของคุณ แต่คุณสามารถใช้ได้ในนิพจน์ที่ส่งไปยังฟังก์ชันEval

ตัวอย่างถัดไปกำหนดว่า ค่าของตัวควบคุม ShipRegion บนฟอร์มใบสั่งซื้อเป็นตัวย่อสถานะที่ระบุหลายอย่างใดอย่างหนึ่ง ถ้าเขตข้อมูลประกอบด้วยค่าใดค่าหนึ่งในตัวย่อintStateจะเป็นจริง(– 1) โปรดสังเกตว่า คุณใช้เครื่องหมายอัญประกาศเดี่ยว (') เพื่อรวมสตริงที่ภายในสตริงที่อื่น

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

ตัวอย่าง

ตัวอย่างต่อไปนี้ถือว่า คุณมีชุดข้อมูลของฟังก์ชัน 50 สใช้สมการ A1, A2 และอื่น ๆ ตัวอย่างนี้ใช้ฟังก์ชันEvalเพื่อเรียกฟังก์ชันแต่ละรายการในชุดข้อมูล

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

ตัวอย่างต่อทริกเกอร์เหตุการณ์ที่คลิว่าผู้ใช้คลิกปุ่มบนฟอร์ม ถ้าค่าของคุณสมบัติเมื่อคลิกปุ่มเริ่มต้น ด้วยเครื่องหมายเท่ากับ (=), บ่งบอกว่า เป็นชื่อของฟังก์ชันEvalฟังก์ชันเรียกฟังก์ชัน ซึ่งจะเท่ากับการทริกเกอร์เหตุการณ์คลิก ถ้าค่าไม่เริ่มต้น ด้วยเครื่องหมายเท่ากับ แล้วค่าต้องชื่อแมโคร เมธอดRunMacroของวัตถุDoCmdเรียกใช้แมโครที่มีชื่อ

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

หมายเหตุ: ข้อจำกัดความรับผิดชอบของการแปลด้วยเครื่อง: บทความนี้มีการแปลด้วยระบบคอมพิวเตอร์โดยไม่มีการดำเนินการโดยบุคคล Microsoft จัดให้มีการแปลด้วยเครื่องนี้เพื่อช่วยให้ผู้ใช้ที่ไม่ได้พูดภาษาอังกฤษสามารถใช้ประโยชน์จากเนื้อหาเกี่ยวกับผลิตภัณฑ์ บริการและเทคโนโลยีของ Microsoft เนื่องจากบทความมีการแปลด้วยเครื่อง อาจมีข้อผิดพลาดด้านคำศัพท์ ไวยากรณ์หรือรูปประโยค

ขยายทักษะของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×