Vba: วิธีออกจาก sub เมื่อเกิดข้อผิดพลาด
คุณสามารถใช้คำสั่ง Exit Sub ใน VBA เพื่อออกจากกระบวนการย่อยเมื่อพบข้อผิดพลาด
นี่เป็นวิธีทั่วไปในการใช้คำสั่งนี้ในทางปฏิบัติ:
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
มาโครเฉพาะนี้พยายามหารแต่ละค่าในช่วง A1:A10 ด้วยค่าที่สอดคล้องกันในช่วง B1:B10
หากมีข้อผิดพลาดเกิดขึ้น (เช่น เรากำลังพยายามหารด้วยศูนย์) คำสั่ง On Error GoTo จะบอก VBA ให้เข้าถึง ErrorMessage ซึ่งบอกให้สร้างกล่องข้อความแจ้งผู้ใช้ว่ามีข้อผิดพลาดเกิดขึ้น และยุติกระบวนการย่อยโดยใช้ Exist Sub . คำแถลง.
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: วิธีมีอยู่ย่อยในกรณีที่เกิดข้อผิดพลาดใน VBA
สมมติว่าเรามีรายการค่าต่อไปนี้ในคอลัมน์ A และ B:

ตอนนี้ สมมติว่าเราสร้างแมโครต่อไปนี้เพื่อแบ่งแต่ละค่าในคอลัมน์ A ด้วยค่าที่สอดคล้องกันในคอลัมน์ B และแสดงผลลัพธ์ในคอลัมน์ C:
Sub DivideValues()
Dim i As Integer
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับข้อผิดพลาดต่อไปนี้:

เราได้รับข้อผิดพลาดนี้เนื่องจากในแถวที่สี่ของแผ่นงาน Excel เราพยายามหารด้วยศูนย์
ถ้าเราเพียงต้องการออกจากกระบวนการย่อยเมื่อเกิดข้อผิดพลาดนี้ เราสามารถใช้คำสั่ง Exit Sub ได้ดังต่อไปนี้:
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
เมื่อเราเรียกใช้แมโครนี้ ขั้นตอนย่อยจะแก้ไขปัญหาการแบ่งที่เป็นไปได้ทั้งหมดก่อนที่จะพบข้อผิดพลาด จากนั้นกล่องข้อความจะปรากฏขึ้นเพื่อแจ้งให้เราทราบว่ามีข้อผิดพลาดเกิดขึ้น และ VBA ก็มีอยู่อยู่ในขั้นตอนย่อย:

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