ประเภทข้อผิดพลาดใน VBA สำหรับ Excel - รายการและตัวอย่าง

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

ประเภทของข้อผิดพลาดใน VBA สำหรับ Excel

การทดสอบและติดตามข้อผิดพลาดประเภทต่างๆในโค้ด VBA อาจใช้เวลานานและน่าหงุดหงิด ไม่ใช่เรื่องแปลกที่จะได้ยินโปรแกรมเมอร์ Programming Programming คือกระบวนการเขียนคำสั่งเพื่อให้คอมพิวเตอร์ดำเนินการ มันคล้ายกับสูตรอาหารสำหรับมนุษย์ สูตรอาหารประกอบด้วยรายการการกระทำที่บอกว่าใช้เวลาในการทดสอบมากกว่า 30%

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

ประเภทของข้อผิดพลาด VBA

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

1. ข้อผิดพลาดทางไวยากรณ์ - โค้ดบางบรรทัดเขียนไม่ถูกต้อง

2. ข้อผิดพลาดในการคอมไพล์ - ปัญหาที่เกิดขึ้นเมื่อรวมบรรทัดของโค้ดเข้าด้วยกันแม้ว่าโค้ดแต่ละบรรทัดจะดูสมเหตุสมผลก็ตาม

3. ข้อผิดพลาดรันไทม์ - เมื่อรหัสมักจะถูกต้องตามหลักการ แต่การดำเนินการของผู้ใช้หรือข้อมูลที่ใช้ทำให้เกิดข้อผิดพลาดที่ไม่คาดคิด

ข้อผิดพลาดทางไวยากรณ์คืออะไร?

ข้อผิดพลาดทางไวยากรณ์เป็นวิธีที่ VBA บอกคุณว่ารหัสของคุณเหมาะสมหรือไม่ในระดับพื้นฐานที่สุด เราสามารถเปรียบเทียบง่ายๆกับกฎการเขียนประโยคในภาษาอังกฤษ:

  • เรื่องเป็นสิ่งจำเป็น
  • คำกริยาจะต้อง
  • ทุนตัวอักษรเป็นสิ่งจำเป็นที่จุดเริ่มต้น
  • ต้องมีเครื่องหมายวรรคตอนต่อท้าย
  • วัตถุคำคุณศัพท์และคุณลักษณะทางไวยากรณ์อื่น ๆ เป็นทางเลือก

เจนพบ 18 ข้อผิดพลาดในรหัส

ในทำนองเดียวกัน VBA กำหนดกฎเกณฑ์บางประการเกี่ยวกับสิ่งที่จำเป็นในบางสถานการณ์ ตัวอย่างเช่นเมื่อเริ่มต้นคำสั่ง IF แบบมีเงื่อนไขพื้นฐานในโค้ดของคุณคุณต้องจำลองกฎไวยากรณ์ต่อไปนี้สำหรับบรรทัดแรกของคำสั่ง IF

  • ต้องขึ้นต้นด้วยIf
  • ถัดไปต้องเป็นการทดสอบทางตรรกะเช่น x> 10
  • สุดท้ายนี้ก็ต้องจบลงด้วยคำว่าแล้ว

ถ้าNumberErrors> 20 แล้ว

หากคุณทำผิดกฎข้างต้นของภาษาอังกฤษหรือ VBA ถือว่าไวยากรณ์ (อังกฤษ) หรือไวยากรณ์ (VBA) ของคุณไม่ถูกต้อง

วิธีระบุข้อผิดพลาดของไวยากรณ์

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

ข้อผิดพลาดทางไวยากรณ์พื้นฐาน:

ไวยากรณ์พื้นฐานผิดพลาด

กล่องข้อความแสดงข้อผิดพลาดของไวยากรณ์:

กล่องข้อความผิดพลาดของไวยากรณ์

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

การตรวจสอบไวยากรณ์อัตโนมัติ

วิธีแก้ไขข้อผิดพลาดทางไวยากรณ์

ข้อผิดพลาดทางไวยากรณ์แสดงถึงความผิดพลาดในวิธีการเขียนโค้ดเฉพาะบรรทัด ต้องได้รับการแก้ไขก่อนจึงจะสามารถเรียกใช้รหัสได้ ด้วยประสบการณ์ข้อความสีแดงจะเป็นสิ่งที่คุณต้องการเพื่อระบุข้อผิดพลาด แต่ถ้าคุณยังติดอยู่ให้ค้นหาทางออนไลน์ด้วยคำว่า "if statement syntax vba" หรือรูปแบบใดก็ตามที่เหมาะกับความต้องการของคุณคุณจะพบตัวอย่างมากมายของบรรทัดเฉพาะที่คุณพยายามเขียน

Compile Errors คืออะไร?

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

วิธีระบุข้อผิดพลาดในการคอมไพล์

เมื่อคุณเรียกใช้โค้ด VBA ข้อผิดพลาดในการคอมไพล์จะแสดงในกล่องโต้ตอบ VBA ตามตัวอย่างด้านล่าง

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

ตัวอย่าง 1

ข้อผิดพลาดในการคอมไพล์สำหรับส่วน“ End if” ที่ขาดหายไปของคำสั่ง IF แต่ละบรรทัดในรหัสถูกต้อง แต่รวมกันแล้วไม่ได้แสดงถึงคำสั่ง IF ที่สมบูรณ์

ข้อผิดพลาดในการคอมไพล์ - ตัวอย่างที่ 1

ตัวอย่าง 2

ในตัวอย่างนี้กระบวนการคอมไพล์ VBA ตรวจพบข้อผิดพลาดทางไวยากรณ์โดยเน้นด้วยสีแดง VBA ระบุว่าโค้ดด้านล่างไม่มีวงเล็บปิดของฟังก์ชัน

ข้อผิดพลาดในการคอมไพล์ - ตัวอย่างที่ 2

ตัวอย่างที่ 3

ข้อผิดพลาดในการคอมไพล์เป็นเรื่องปกติเมื่อใช้ Option Explicit และเกิดขึ้นเมื่อไม่ได้กำหนดตัวแปรไว้อย่างชัดเจน เมื่อเปิดใช้งาน Option Explicit คำสั่ง Dim จำเป็นต้องประกาศตัวแปรทั้งหมดก่อนที่จะใช้ในโค้ดของคุณ

ข้อผิดพลาดในการคอมไพล์ - ตัวอย่างที่ 3

วิธีแก้ไขข้อผิดพลาดในการคอมไพล์

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

หากยังไม่ชัดเจนสำหรับคุณในทันทีว่าปัญหาเกิดจากข้อความแสดงข้อผิดพลาดให้ลองใช้ศูนย์ช่วยเหลือของ Microsoft เพื่อทำความเข้าใจว่าควรเขียนคำสั่งหรือฟังก์ชันของคุณอย่างไร นี่คือตัวอย่างของข้อความแสดงข้อผิดพลาด“ Block if without end if” บนเว็บไซต์ Microsoft

บล็อกหากไม่มีจุดสิ้นสุดหาก

Runtime Errors คืออะไร?

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

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

ข้อผิดพลาดรันไทม์มักเกิดจากการส่งข้อมูลที่ไม่คาดคิดไปยังโค้ด VBA ประเภทข้อมูลที่ไม่ตรงกันหารด้วยศูนย์ที่ไม่คาดคิดและช่วงเซลล์ที่กำหนดไว้ไม่พร้อมใช้งาน ข้อผิดพลาดรันไทม์ยังเป็นข้อผิดพลาดที่หลากหลายและซับซ้อนที่สุดในการติดตามและแก้ไข

วิธีระบุข้อผิดพลาดรันไทม์

VBA Debug VBA: How to Debug Code เมื่อเขียนและรันโค้ด VBA สิ่งสำคัญคือผู้ใช้ต้องเรียนรู้วิธีการดีบักข้อผิดพลาดของโค้ด เป็นความคาดหวังของผู้ใช้ Excel ที่ฟังก์ชันโค้ดจะเน้นรหัสปัญหาเป็นสีเหลืองและให้เบาะแสเล็กน้อยว่าอะไรเป็นสาเหตุของปัญหา

ตัวอย่าง 1

แม้ว่าโค้ดด้านล่างจะแบ่งตัวเลขหนึ่งตัวด้วยอีกตัว แต่ก็มีบางกรณีที่ไม่สามารถทำได้ ตัวอย่างเช่นถ้าเซลล์ A1 = 2 และเซลล์ A2 = 0 จะไม่สามารถหารด้วยศูนย์ได้ กล่องข้อผิดพลาดรันไทม์มีปุ่มดีบักซึ่งเน้นรหัสปัญหา

ข้อผิดพลาดรันไทม์ - ตัวอย่างที่ 1

ข้อผิดพลาดรันไทม์ - ตัวอย่าง 1a

ตัวอย่าง 2

ในตัวอย่างนี้ฉันสร้างอาร์เรย์เพื่อรวบรวมชื่อ บริษัท n ในแผ่นงานของฉัน จากนั้นฉันพยายามอ้างอิงรายการที่หกซึ่งอาจมีหรือไม่มีอยู่ในเวลาทำงาน VBA แสดงข้อความแสดงข้อผิดพลาดรันไทม์และให้ฉันกด Debug เพื่อตรวจสอบปัญหา

ข้อผิดพลาดรันไทม์ - ตัวอย่างที่ 2

เมื่อฉันกด Debug VBA จะไฮไลต์บรรทัดของโค้ดที่เป็นสาเหตุของปัญหา ตอนนี้ฉันต้องการใช้ข้อความ“ ตัวติดตามนอกช่วง” เพื่อหาว่าเกิดอะไรขึ้น โดยทั่วไปแล้วข้อผิดพลาดของตัวห้อยนอกช่วงหมายความว่ารหัสของคุณดีโดยหลักการแล้ว แต่ไม่พบรายการเฉพาะที่คุณต้องการ โดยทั่วไปจะเกิดขึ้นเมื่ออ้างอิงเซลล์หรือช่วงใน Excel รวมถึงอาร์เรย์ในรหัส VBA ของคุณ

ข้อผิดพลาดรันไทม์ - ตัวอย่าง 2a

เพื่อให้แน่ใจว่าฟังก์ชัน Debug เปิดใช้งานอยู่ในเมนูตัวเลือก> ทั่วไป> การดักจับข้อผิดพลาดสถานะเริ่มต้นควรเป็น“ Break on Unhandled Errors” เลือกตัวเลือกทิ้งไว้

ทำลายข้อผิดพลาดที่ไม่สามารถจัดการได้

วิธีแก้ไขข้อผิดพลาดรันไทม์

เนื่องจากข้อผิดพลาดของรันไทม์มีความหลากหลายและซับซ้อนวิธีแก้ปัญหาจึงมีหลากหลายเช่นกัน วิธีการทั่วไปสองวิธีในการลดข้อผิดพลาดรันไทม์ ได้แก่ :

เกิดข้อผิดพลาดในการดักจับ

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

ตัวอย่าง 1

ที่นี่บรรทัด 'On Error Resume Next' บังคับให้รหัสดำเนินการต่อแม้ว่าจะตรวจพบข้อผิดพลาด จากนั้นเราใช้การทดสอบ If Err> 0 เพื่อสร้างข้อความเตือนหากมีข้อผิดพลาดเท่านั้น 'On Error Goto 0' รีเซ็ต VBA เป็นสถานะเริ่มต้น

การดักจับข้อผิดพลาด - ตัวอย่างที่ 1

ตัวอย่าง 2

ที่นี่รหัสกำลังคำนวณรายได้ต่อวันโดยพิจารณาจากรายได้ต่อเดือนและจำนวนวันที่กำหนด หากไม่ได้ระบุจำนวนวันเราจะข้ามไปยังจุดที่กำหนดไว้ในรหัสของเราที่เรียกว่า“ NoDaysInMonthProvided:,” โดยที่เราใช้จำนวนวันโดยเฉลี่ยในหนึ่งเดือนเป็นสมมติฐานพื้นฐาน แม้ว่าจะเป็นเรื่องง่าย แต่ก็แสดงให้เห็นอย่างชัดเจนว่าจะดักจับข้อผิดพลาดและข้ามไปยังจุดอื่นในโค้ดของคุณได้อย่างไร

การดักจับข้อผิดพลาด - ตัวอย่างที่ 2

ล้างคำแนะนำผู้ใช้

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

สรุป

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

แหล่งข้อมูลเพิ่มเติม

Finance เป็นผู้ให้บริการอย่างเป็นทางการของ Certified Banking & Credit Analyst (CBCA) ™ CBCA ™ Certification ระดับโลกการรับรอง Certified Banking & Credit Analyst (CBCA) ™เป็นมาตรฐานระดับโลกสำหรับนักวิเคราะห์สินเชื่อที่ครอบคลุมด้านการเงินการบัญชีการวิเคราะห์เครดิตการวิเคราะห์กระแสเงินสด การสร้างแบบจำลองตามพันธสัญญาการชำระคืนเงินกู้และอื่น ๆ โปรแกรมการรับรองซึ่งออกแบบมาเพื่อช่วยให้ทุกคนเป็นนักวิเคราะห์การเงินระดับโลก เพื่อความก้าวหน้าในอาชีพการงานของคุณแหล่งข้อมูลเพิ่มเติมด้านล่างนี้จะเป็นประโยชน์:

  • #REF ข้อผิดพลาด Excel #REF ข้อผิดพลาด Excel ข้อผิดพลาด #REF Excel ทำให้เกิดปัญหาใหญ่ในสเปรดชีต เรียนรู้วิธีค้นหาและแก้ไขข้อผิดพลาด #REF ใน Excel ในบทช่วยสอนฉบับย่อนี้พร้อมตัวอย่างและภาพหน้าจอ เป็น #REF! ข้อผิดพลาด ("ref" หมายถึงการอ้างอิง) คือข้อความที่ Excel แสดงเมื่อสูตรอ้างอิงถึงเซลล์ที่ไม่มีอยู่แล้วซึ่งเกิดจากการลบเซลล์ที่
  • ตัวอย่าง Excel VBA ตัวอย่าง Excel VBA Excel VBA ช่วยให้ผู้ใช้สามารถสร้างมาโครที่ทำให้กระบวนการภายใน Excel เป็นไปโดยอัตโนมัติ คู่มือนี้จะใช้ตัวอย่าง Excel VBA เพื่อแสดงวิธีบันทึกมาโครโดยการตั้งค่ามาโครวิธีการประกาศตัวแปรและวิธีอ้างอิงข้อมูล
  • เคล็ดลับในการเขียน VBA ใน Excel เคล็ดลับในการเขียน VBA ใน Excel ด้านล่างนี้เป็นเคล็ดลับเก้าประการในการเขียน VBA ใน Excel VBA สำหรับ Excel นำเสนอความเป็นไปได้มากมายสำหรับการคำนวณแบบกำหนดเองและระบบอัตโนมัติ
  • วิธี VBA วิธี VBA เมธอด VBA คือโค้ดที่แนบมากับออบเจ็กต์ VBA ตัวแปรหรือการอ้างอิงข้อมูลที่บอก Excel ว่าจะดำเนินการใดที่สัมพันธ์กับออบเจ็กต์นั้น การคัดลอกวางและเลือกเป็นเพียงตัวอย่างบางส่วนของวิธีการ VBA ที่สามารถทำได้