หยุดรหัส 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 วินาที ที่สุดแล้วเวลาของฉันมีดังนี้
ดังนั้นเราจึงสามารถหยุดการทำงานของโค้ดชั่วคราวตามระยะเวลาที่กำหนดได้