Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
VBA
General Function
ดาวน์โหลดคู่มือ

DoEvents Function

VBA Function, สำหรับการประมวลผลเพื่อทำให้ระบบปฏิบัติการสามารถประมวลผล Event อื่นๆ

ไวยากรณ์

DoEvents()

ลักษณะการประยุกต์

ฟังก์ชัน DoEvents ส่งออกค่าตัวเลขจำนวนเต็มที่แสดงหมายเลขของฟอร์มในภาษา Visual Basic เวอร์ชัน Stand-alone

ฟังก์ชัน DoEvents ส่งค่าเป็น 0 สำหรับการประยุกต์อื่นๆทั้งหมด

ฟังก์ชัน DoEvents ส่งผ่านตัว Control ไปยังระบบปฏิบัติการ ซึ่งการส่งออกค่าตัว Control จะส่งภายหลังที่ระบบปฏิบัติการสิ้นสุด Event ในแถวคอย (queue) และ keys ทั้งหมดที่คำสั่ง SendKeys ได้รับการส่ง

ฟังก์ชัน DoEvents ใช้ประโยชน์ในงานพื้นฐาน อาทิ การยินยอมให้ผู้ใช้ในการยกเลิกกระบนการหลังเริ่มทำงานได้ เช่น การค้นหาไฟล์ สำหรับการประมวลผลที่ต้องใช้เวลานาน ผลที่ได้ของตัวประมวลผล (processor) จะทำงานได้ดีกว่า ถ้าใช้ฟังก์ชัน Timer หรือ ส่วน ActiveX EXE เป็นตัวแทนของ task ในกรณีหลัง task สามารถประมวลผลอย่างต่อเนื่องโดยเป็นอิสระจากโปรแกรมประยุกต์ และระบบปฏิบัติการทำงานแบบ multi-tasking และแบ่งส่วนเวลา

ข้อควรระวัง การให้ผลกับตัวประมวลผลภายใน Event procedure ต้องตรวจสอบให้แน่ใจว่าไม่มีการประมวลซ้ำจากส่วนอื่นของชุดคำสั่งก่อนที่การเรียกใช้ครั้งแรกจะสิ้นสุด

ดูเพิ่มเติม

SendKeys Statement

การประยุกต์ใน Access

ใน Microsoft Access ฟังก์ชัน DoEvents จะถูกละเลยถ้ามีการใช้ใน

ฟังก์ชันหรือ Procedure ที่ผู้ใช้กำหนดเองที่ใช้คำนวณฟิลด์ในคิวรี่, ฟอร์ม หรือรายงาน
ฟังก์ชันที่ผู้ใช้กำหนดเองที่สร้างการเพิ่มรายการให้กับ Combo box, List box หรืออ๊อบเจคแบบ OLE
ถ้ามีการกำหนดฟังก์ชัน DoEvents เข้าไปในฟังก์ชันหรือ Procedure ที่กล่าวมา Microsoft Access จะไม่สามารถส่งตัว Control ไปที่ระบบปฏิบัติการ

ตัวอย่าง

ตัวอย่างนี้ใช้ฟังก์ชัน DoEvents ให้ผลกับระบบปฏิบัติการทุกๆ 1000 รอบ โดย DoEvents ส่งออกค่าหมายเลขของฟอร์ม Visual Basic ที่เปิด ซึ่งเฉพาะการประยุกต์หลักใน Visual Basic

' สร้างตัวแปรเก็บค่าหมายเลขของฟอร์ม Visual Basic ที่เรียกมาและมองเห็น
Dim I, OpenForms
For I = 1 To 150000 ' เริ่มต้นรอบ

  ' ถ้าครบ 1000 รอบ
  If I Mod 1000 = 0 Then
    ' ส่งผลให้ระบบปฏิบัติการ
    OpenForms = DoEvents
  End If
Next I ' เพิ่ม counter ของรอบ

ตัวอย่างการประยุกต์ใน Access

ตัวอย่างการใช้ฟังก์ชัน DoEvents เพื่อส่งออกค่าตัว Control ไปที่ระบบปฏิบัติการเมื่อ Loop มีการประมวลผล ฟังก์ชัน DoEvents ส่งค่าเป็น 0 เสมอ

Sub LongLoop()

  Dim intI As Integer
  ' เริ่มต้น Loop
  For intI = 1 To 1500

  ' ถ้าครบ 1000 รอบ
  If intI Mod 1000 = 0 Then
    DoEvents ' ส่งผลให้ระบบปฏิบัติการ
    Debug.Print intI
    End If
  Next intI ' เพิ่ม counter ของ Loop

End Sub