VBA หยุดชั่วคราว | หยุดรหัส VBA ชั่วคราวโดยใช้ฟังก์ชัน Sleep and Wait

หยุดรหัส VBA ชั่วคราวไม่ให้ทำงาน

VBA Pauseใช้เพื่อหยุดโค้ดชั่วคราวไม่ให้เรียกใช้งานตามระยะเวลาที่กำหนดและหยุดโค้ดชั่วคราวใน VBA เราใช้วิธี application.wait

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

วิธีหยุดรหัสชั่วคราวโดยใช้วิธีการรอ

“ Wait” เป็นฟังก์ชันที่เราใช้ใน VBA เพื่อให้มาโครทำงานตามระยะเวลาที่กำหนด โดยการใช้ฟังก์ชันนี้เราต้องพูดถึงเวลาที่รหัสของเราควรรอ

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

ตัวอย่างเช่นหากคุณเรียกใช้รหัสเวลา 13:00:00 น. หากคุณระบุเวลาเป็น "13:15:00" มาโครจะหยุดทำงานเป็นเวลา 15 นาที

ตอนนี้ดูอาร์กิวเมนต์ของฟังก์ชัน WAIT ใน VBA

ในการโต้แย้งเวลาเราต้องพูดถึงเวลาที่รหัสของเราควรหยุดชั่วคราวหรือรอ

ตัวอย่างเช่นดูโค้ด VBA ด้านล่าง

รหัส:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). value = " ถึง VBA "End Sub 

โปรดจำไว้ว่าในขณะที่เรียกใช้รหัสนี้เวลาระบบของฉันคือ 13:00:00 ทันทีที่ฉันเรียกใช้รหัสมันจะดำเนินการสองบรรทัดแรกคือ

Range ("A1"). Value = "Hello" & Range ("A2"). Value = "Welcome"

แต่ถ้าคุณดูบรรทัดถัดไปจะมีข้อความว่า Application.Wait (“ 13:15:00”) ดังนั้นหลังจากเรียกใช้งานบรรทัดเหล่านั้นมาโครของฉันจะหยุดชั่วคราวเป็นเวลา 15 นาทีคือตั้งแต่ 13:00:00 น. มันจะรอจนกว่าระบบของฉัน เวลาถึง 13:15:01 น.

เมื่อระบบของฉันถึงเวลานั้นระบบจะรันโค้ดที่เหลือ

ช่วง ("A3") ค่า = "ถึง VBA"

อย่างไรก็ตามนี่ไม่ใช่วิธีที่ดีที่สุดในการฝึกรหัสหยุดชั่วคราวสมมติว่าคุณกำลังเรียกใช้โค้ดในเวลาที่ต่างกันเราจำเป็นต้องใช้ฟังก์ชัน NOW VBA กับฟังก์ชัน TIME VALUE

ฟังก์ชันNowจะคืนค่าวันที่และเวลาปัจจุบันตามระบบที่เรากำลังดำเนินการ

ฟังก์ชันTIME Valueถือเวลา 00:00:00 ถึง 23:59:29 น.

ตกลงสมมติว่าเราจำเป็นต้องหยุดรหัสชั่วคราวเป็นเวลา 10 นาทีเมื่อใดก็ตามที่เราเรียกใช้รหัสจากนั้นเราสามารถใช้รหัสด้านล่าง

รหัส:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" To VBA "End Sub 

สิ่งนี้คล้ายกับรหัสก่อนหน้า แต่ความแตกต่างเพียงอย่างเดียวคือเราได้เพิ่มฟังก์ชัน NOW & TIME VALUE

เมื่อใดก็ตามที่เรารันโค้ดนี้มันจะระงับหรือหยุดการทำงานชั่วคราวเป็นเวลา 10 นาที

วิธีหยุดรหัส VBA ชั่วคราวโดยใช้ Sleep Method?

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

รหัส:

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

คุณต้องคัดลอกโค้ดด้านบนและวางที่ด้านบนของโมดูล

สาเหตุที่เราต้องเพิ่มโค้ดข้างต้นเนื่องจาก SLEEP เป็นฟังก์ชัน VBA ที่แสดงในไฟล์ Windows DLL ดังนั้นเราจึงจำเป็นต้องประกาศระบบการตั้งชื่อก่อนที่เราจะเริ่มกระบวนการย่อย

เอาล่ะมาดูตัวอย่างฟังก์ชัน SLEEP กันเลย

รหัส:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

อันดับแรกเราได้ประกาศตัวแปรสองตัวเป็น String

 Dim StartTime เป็น String Dim EndTime As String 

จากนั้นเราได้กำหนดฟังก์ชัน TIME excel ให้กับตัวแปร StartTime ฟังก์ชัน TIME ส่งคืนเวลาปัจจุบันตามระบบ

StartTime = เวลา

จากนั้นเราได้กำหนดสิ่งเดียวกันเพื่อแสดงในกล่องข้อความ

MsgBox StartTime

จากนั้นฉันได้ใช้ฟังก์ชัน SLEEP เป็น Sleep (10,000)

นี่คือ 10,000 มิลลิวินาทีซึ่งเท่ากับ 10 วินาทีใน VBA

จากนั้นที่ผ่านมาผมได้รับมอบหมายให้ฟังก์ชั่นอีกครั้งหนึ่งตัวแปรEndTime

อีกครั้งฉันได้เขียนรหัสเพื่อแสดงเวลา

EndTime = เวลา

ซึ่งจะแสดงความแตกต่างระหว่างเวลาเริ่มต้นและเวลาสิ้นสุด

ตอนนี้ฉันจะรันโค้ดและดูว่าเวลาเริ่มต้นคืออะไร

เมื่อฉันรันโค้ดเวลาระบบของฉันคือ 13:40:48 และตอนนี้รหัสของฉันจะเข้าสู่โหมดสลีป 10 วินาที ที่สุดแล้วเวลาของฉันมีดังนี้

ดังนั้นเราจึงสามารถหยุดการทำงานของโค้ดชั่วคราวตามระยะเวลาที่กำหนดได้