ฟังก์ชัน VBA Wait | วิธีใช้ Excel VBA Wait Method

ฟังก์ชันรอ Excel VBA

VBA Waitเป็นฟังก์ชันในตัวที่ใช้เพื่อหยุดการทำงานของโค้ดชั่วคราวตามระยะเวลาที่กำหนดซึ่งคล้ายกับสิ่งที่เราทำในคำสั่ง sleep และหยุดรหัสชั่วคราวที่เราใช้วิธี application.wait

รหัสบางส่วนต้องใช้เวลาก่อนที่จะดำเนินการต่อไปยังบรรทัดถัดไปของรหัสเนื่องจากงานอื่น ๆ จะต้องดำเนินการให้เสร็จสิ้น ในกรณีเหล่านี้เราจำเป็นต้องหยุดการทำงานของโค้ดและหยุดชั่วคราวสักระยะหนึ่งจากนั้นจึงดำเนินการต่อ เราสามารถหยุดการทำงานของโค้ดชั่วคราวได้ 2 วิธีวิธีแรกคือวิธี "Sleep" และวิธีที่สองคือวิธี "Wait" ในบทความก่อนหน้านี้เราได้กล่าวถึงวิธี "VBA Sleep" เพื่อหยุดโค้ด VBA ชั่วคราว

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

ไวยากรณ์ของฟังก์ชัน WAIT มีดังนี้

เราจำเป็นต้องพูดถึงระยะเวลาที่โค้ดของเราควรหยุดชั่วคราว ดังที่คุณเห็นในตอนท้ายมันบอกว่าบูลีนซึ่งหมายความว่าจะส่งคืนผลลัพธ์เป็นค่าบูลีนเช่น TRUE หรือ FALSE

จนกระทั่งเวลาที่ระบุมาถึงจะมีข้อความว่า FALSE และเมื่อถึงเวลาที่ระบุก็จะส่งกลับ TRUE

ซึ่งแตกต่างจากฟังก์ชัน SLEEP เนื่องจาก WAIT เป็นฟังก์ชันในตัวโดยที่ SLEEP เป็นฟังก์ชัน Windows ก่อนที่เราจะเข้าถึงฟังก์ชัน SLEEP เราต้องพูดถึงโค้ดด้านล่างที่ด้านบนของโมดูล แต่ WAIT ไม่ต้องการสิ่งนี้

รหัส:

# ถ้า VBA7 แล้วสาธารณะประกาศ PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' สำหรับระบบ 32 บิตจะสิ้นสุดหาก 

ตัวอย่างการใช้ Excel VBA Wait Function

คุณสามารถดาวน์โหลด VBA Wait Excel Template ได้ที่นี่ - VBA Wait Excel Template

ตัวอย่าง # 1

สมมติว่าคุณกำลังทำงานใน excel กลางวันเวลา 14:30:00 น. และคุณต้องการให้รหัสของคุณหยุดชั่วคราวจนกว่าเวลาจะกลายเป็น 14:40:00 น. คุณสามารถใช้รหัสด้านล่างนี้

รหัส:

 Sub Wait_Example1 () Application.Wait "14:40:00" End Sub 

รหัสจะหยุด excel ของคุณไม่ให้ทำงานจนกว่าจะถึงเวลา 14:40:00 น. ในระบบปฏิบัติการของคุณ การให้เวลาเช่นนี้เป็นเรื่องอันตรายเพราะเราไม่ได้ทำงานตั้งแต่ 14:30:00 น. เสมอไปมันจะแปรผันตลอดเวลา

สมมติว่าเมื่อใดก็ตามที่คุณเรียกใช้โค้ดที่คุณต้องการรอ 2 นาทีจะอ้างอิงสิ่งนี้ในโค้ดของคุณได้อย่างไร?

ดังนั้นเราสามารถใช้ฟังก์ชัน VBA NOW กับฟังก์ชัน TIME VALUE เพื่อป้อนเวลาที่ระบุจากเวลาปัจจุบัน

เพียงเพื่อเตือนคุณฟังก์ชัน NOW () จะส่งคืนวันที่และเวลาปัจจุบันตามระบบคอมพิวเตอร์ของคุณ ฟังก์ชัน TIMEVALUE แสดงเวลาตั้งแต่ 00:00:00 ถึง 23:59:59 น. เช่น 23:59:59 น. ในรูปแบบ 24 ชั่วโมง จะแปลงค่าสตริงเป็นค่าเวลา

ตัวอย่างเช่น NOW () + TIMEVALUE (00:02:30) หมายถึงเวลาปัจจุบัน + 2 นาที 30 วินาที

หากเวลาปัจจุบันคือ 14:25:30 น. จะกลายเป็น 14:28:00 น.

หากต้องการหยุดหรือหยุดการทำงานของโค้ดของคุณชั่วคราวตั้งแต่เวลาปัจจุบันไปจนถึง 10 นาทีถัดไปคุณสามารถใช้รหัสด้านล่าง

รหัส:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

สิ่งสำคัญคือต้องใช้ฟังก์ชัน NOW () เพื่อการหยุดชั่วคราวที่ถูกต้องมิฉะนั้นสมุดงาน excel ของคุณจะหยุดชั่วคราวจนถึงเที่ยงคืน อย่างไรก็ตามเราสามารถใช้วิธีหยุดชั่วคราวเมื่อใดก็ได้โดยการกดปุ่มEscหรือBreak Key

ตัวอย่าง # 2

รอ 10 วินาทีทุกครั้งที่ลูปทำงาน

วิธีการรอใช้กับลูปได้ดี มีสถานการณ์ที่คุณอาจต้องรอ 10 วินาทีทุกครั้งที่ลูปทำงาน ตัวอย่างเช่นดูข้อมูลด้านล่าง

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

รหัส:

 Sub Wait_Example3 () Dim k As Integer For k = 2 ถึง 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) ถัดไป k End Sub 

รหัสนี้จะคำนวณคอลัมน์กำไรทีละบรรทัด หลังจากเสร็จสิ้นบรรทัดแรกแล้วระบบจะรอ 10 วินาทีก่อนที่จะคำนวณบรรทัดถัดไป

VBA Sleep vs VBA Wait

VBA นอนหลับรอ VBA
ไม่ใช่ฟังก์ชันในตัว VBA ต้องใช้รหัสพิเศษเพื่อเข้าถึงฟังก์ชันนี้เป็นฟังก์ชันในตัว VBA ไม่ต้องใช้รหัสพิเศษใด ๆ ในการเข้าถึงฟังก์ชันนี้
การนอนหลับต้องใช้มิลลิวินาทีเป็นกรอบเวลาการรอต้องมีกรอบเวลาปกติ
เราสามารถหน่วงเวลาโค้ดเป็นมิลลิวินาทีเราสามารถหน่วงเวลาได้ทั้งวินาทีเท่านั้น