แอป Excel VBA หยุดโดยทันทีพร้อมข้อความ“ การเรียกใช้โค้ดถูกหยุด”


151

จากสิ่งที่ฉันเห็นบนเว็บนี่คือการร้องเรียนที่พบบ่อยพอสมควร แต่คำตอบดูเหมือนจะหายาก ปัญหาคือ:

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

หากคุณกด F5 (เรียกใช้) หลังจากหยุดทำงานแอปจะดำเนินต่อไปดังนั้นมันจึงเกือบจะเหมือนเพิ่มจุดพัก เราได้ลองเลือก 'ลบตัวแบ่งทั้งหมด' จากเมนูและแม้กระทั่งเพิ่มตัวแบ่งและลบอีกครั้ง

เราเคยพบปัญหานี้กับแอพเดียวก่อนหน้านี้และเรา 'ได้รับผลกระทบ' โดยการตัดโค้ดออกจากโมดูลรวบรวมและวางกลับเข้าไปใหม่

ดูเหมือนว่าปัญหาจะเกี่ยวข้องกับ Excel แทนที่จะเป็น. xls เดียวดังนั้นเราจึงไม่แน่ใจว่าจะจัดการสิ่งนี้ได้อย่างไร

ความช่วยเหลือใด ๆ จะได้รับสุดซึ้ง :)

ขอบคุณ

ฟิลิปวิททิงตัน


2
ผู้ใช้กดหลบหนีในระหว่างการประมวลผลใด ๆ ? หรือแอพอื่น ๆ ที่กำลังส่ง escape key ออก?
shahkalpesh

1
หลังจากเลือกลบจุดพักทั้งหมดคุณยังคอมไพล์ใหม่และบันทึกโครงการ VBA หรือไม่ ฉันเห็นปัญหาที่เกี่ยวข้องภายใน Word VBA ซึ่งจุดพักที่ถูกลบไปก่อนหน้านี้ยังคงทำให้เกิดการหยุดพัก
Dirk Vollmar

ไม่มีการประมวลผลใด ๆ ระหว่างการดำเนินการ shahkalpesh Divo - ขอบคุณฉันอาจไม่ได้ลองพวกเขาอย่างแม่นยำตามลำดับ จะทำในขณะนี้ ...
ฟิลวิททิง

นอกจากความคิดเห็นของ divo มันจะมีประโยชน์ในการคอมเม้นท์บรรทัดที่เกี่ยวข้องและบรรทัดใด ๆ ที่จะหยุดการดีบั๊กพวกเขาสามารถยกเลิกการคอมเม้นต์และโค้ดที่คอมไพล์ใหม่ (อีกครั้ง)
Fionnuala

และฉันลืมที่จะพูดถึง: เพื่อให้เกิดการสร้างจริงขึ้นมาใหม่ปกติแล้วมันเป็นสิ่งจำเป็นในการปรับเปลี่ยนบรรทัดแล้วเลื่อนเคอร์เซอร์ไปที่บรรทัดถัดไปเพื่อตั้งค่าสถานะซอร์สโค้ดตามที่แก้ไข (เช่นทำการเปลี่ยนแปลงเลื่อนเคอร์เซอร์ลงย้าย เลื่อนเคอร์เซอร์ขึ้นและเลิกทำการเปลี่ยนแปลงด้วยตนเอง)
Dirk Vollmar

คำตอบ:


404

ฉันได้พบวิธีแก้ไขปัญหาที่สอง

  1. กดปุ่ม "Debug" ในป๊อปอัพ
  2. กดCtrl+ Pause|Breakสองครั้ง
  3. กดปุ่มเล่นเพื่อดำเนินการต่อ
  4. บันทึกไฟล์หลังจากเสร็จสิ้น

หวังว่านี่จะช่วยใครซักคน


12
+1: ว้าวโพสต์นี้ช่วยฉันจากโลกแห่งความเจ็บปวด ทางออกที่ไม่คาดคิดสำหรับปัญหาที่แปลกประหลาด หลังจากกด [Ctrl + Break] สองครั้งและดำเนินการต่อฉันบันทึกไฟล์ หลังจากนั้นปัญหาจะไม่ปรากฏอีกต่อไปเมื่อฉันปิดและเปิดไฟล์อีกครั้ง
dbenham

28
หากเคยได้รับคำตอบที่สมควรได้รับ upvote นี่คือมัน คำตอบที่ดี
The_Barman

4
สิ่งนี้ช่วยฉันได้มาก คำตอบนี้สมควรได้รับ 1,000 upvotes ฉันถูกรบกวนด้วยปัญหานี้ในช่วง 4-5 วันที่ผ่านมา มันทำงานได้อย่างสมบูรณ์แบบ
demouser123

25
ไม่มีใครรู้ว่าทำไมมันถึงใช้ได้ หรือมันมาจากไหน? ความมหัศจรรย์นี้หรือไม่?
ZX9

4
ยังคงช่วยเหลือฉันในปี 2560 ขอบคุณ!
แผ่น

16

ปัญหานี้มาจากการเล่นโวหารแปลก ๆ ภายใน Office / Windows

หลังจากพัฒนาโค้ด VBA ชิ้นเดียวกันและใช้งานมันหลายร้อยครั้ง (ตามตัวอักษร) ในสองสามวันที่ผ่านมาฉันพบปัญหานี้ในตอนนี้ สิ่งเดียวที่แตกต่างกันก็คือก่อนที่จะประสบปัญหาน่างงนี้ฉันตั้งใจยุติการใช้งานโค้ด VBA ด้วยวิธีการนอกรีต

ฉันล้างไฟล์ temp, rebooted และอื่น ๆ ทั้งหมด ... เมื่อฉันรันโค้ดอีกครั้งหลังจากทั้งหมดนี้ฉันยังคงมีปัญหา - ก่อนที่ฉันจะเข้าสู่ลูปแรก มันทำให้รู้สึกว่า"กดปุ่ม" Debug "ในป๊อปอัพจากนั้นกดสองครั้ง [Ctrl + ตัวแบ่ง] และหลังจากนี้สามารถดำเนินการต่อโดยไม่หยุด"เพราะบางสิ่งในการรวมกันของ Office / Windows ไม่ได้เปิดตัวการดำเนินการ มันติดอยู่

การดำเนินการ Ctrl + Break ที่ซ้ำซ้อนอาจช่วยแก้ไขการประมวลผลที่ล่าช้า


14

ทางออกหนึ่งอยู่ที่นี่ :

ทางออกสำหรับปัญหานี้คือการเพิ่มบรรทัดของรหัส“ Application.EnableCancelKey = xlDisabled” ในบรรทัดแรกของแมโครของคุณ .. ซึ่งจะแก้ไขปัญหาและคุณจะสามารถเรียกใช้แมโครได้สำเร็จโดยไม่ได้รับข้อความแสดงข้อผิดพลาด“ รหัส การดำเนินการถูกขัดจังหวะ”

แต่หลังจากที่ฉันแทรกบรรทัดของรหัสนี้ฉันไม่สามารถใช้ Ctrl + Break อีกต่อไป ดังนั้นจึงใช้งานได้ แต่ไม่มาก


ขอบคุณ Stan - นั่นเป็นทางออกถ้าคุณอยู่ภายใต้ความกดดันและต้องการให้มันทำงาน! มีประโยชน์มาก.
Phil Whittington

1
xlInterruptคุณสามารถเปิดใช้งานในการดำเนินการเดียวกันได้โดยการตั้งค่าให้ (นอกจากนี้ยังเปิดใช้งานอีกครั้งโดยอัตโนมัติเมื่อการเรียกใช้รหัสเสร็จสิ้น) คำตอบอื่นของคุณใช้ได้กับฉัน แต่กรณีที่แย่ที่สุดอาจใช้เป็นการแก้ไขชั่วคราว ข้อมูลเพิ่มเติมเกี่ยวกับ Application.EnableCancelKey
Kodithic

2
คำตอบที่ถูกต้อง - และคำตอบเดียวเท่านั้น - อยู่ด้านบน การแทรกบรรทัดของรหัสใด ๆรวมถึง“ Application.EnableCancelKey = xlDisabled” เพียงแค่เปลี่ยนปัญหาไปยังอีกบรรทัดหนึ่ง บ่อยครั้งที่ 'เบรกพอยต์' ใหม่เป็นบรรทัดที่คุณแทรก เหตุผลเดียวที่ฉันไม่ได้ลดคำตอบลงมาก็คือฉันได้ใช้มันอย่างซ้ำ ๆ ตลอดทศวรรษที่ผ่านมา
Nigel Heffernan


3

ฉันจะลองแก้ไขสิ่งต่าง ๆ ตามปกติ: - เรียกใช้ VBA Code Cleaner ของ Rob Bovey ในรหัส VBA ของคุณ - ลบ Addins ทั้งหมดบนพีซีของผู้ใช้โดยเฉพาะอย่างยิ่ง COM และ. NET Addins - ลบไฟล์. EXD ของผู้ใช้ทั้งหมด ตรวจหาและซ่อมแซมในระบบผู้ใช้ - ตรวจสอบขนาดของไฟล์. xlb ของผู้ใช้ (ควรเป็น 20-30K) - รีบูตแล้วลบผู้ใช้ทั้งหมดไฟล์ชั่วคราว


2

ขอบคุณทุกคนสำหรับการป้อนข้อมูลของพวกเขา ปัญหานี้ได้รับการแก้ไขโดยเลือก REPAIR ในแผงควบคุม ฉันเดาว่านี่เป็นการลงทะเบียนคอมโพเนนต์ COM ดั้งเดิมของ Office อีกครั้งอย่างชัดเจนและทำสิ่งที่ติดตั้งใหม่ไม่ได้ ฉันคาดว่าหลังเพิ่งผ่านรายการตรวจสอบและบางครั้งก็ยอมรับว่ามีอะไรบ้างถ้าติดตั้งไว้แล้วอาจจะ ฉันมีปัญหาแยกต่างหากกับการลงทะเบียน. dll dll ของฉันเองสำหรับ COM interop บนเครื่องของผู้ใช้ (แม้จะใช้กับเครื่องอื่น) แม้ว่าฉันคิดว่านี่เป็นข้อผิดพลาดมากกว่า Microsoft ขอบคุณอีกครั้งฉันซาบซึ้งจริงๆ


2

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

ในไม่ช้าฉันก็พบว่าทางออกที่เป็นไปได้สำหรับปัญหานี้คือการกด CTRL + Break หนึ่งครั้งเมื่อแมโครไม่ทำงาน บางทีนี่อาจช่วยคุณได้เช่นกัน


2

ฉันเคยมีปัญหานี้ด้วยการใช้ excel 2007 กับสมุดงาน foobar.xlsm (เปิดใช้งานมาโคร) ซึ่งจะได้รับ "การเรียกใช้โค้ดถูกขัดจังหวะ" โดยเพียงแค่พยายามปิดสมุดงานบน X สีแดงที่มุมขวาโดยไม่มีมาโครทำงานที่ ทั้งหมดหรือแบบฟอร์ม "เริ่มต้น" สมุดงานหรือแผ่นงานใด ๆ ก็ได้ ตัวเลือกที่ฉันได้รับคือ "สิ้นสุด" หรือ "ดำเนินการต่อ" การดีบั๊กเป็นสีเทาเสมอ ฉันทำตามโปสเตอร์ก่อนหน้านี้แนะนำ Control--> Programs and Features-> คลิกขวา "Microsoft Office Proffesional 2007" (ในกรณีของฉัน) -> change-> repair

การแก้ไขปัญหาสำหรับฉัน ฉันอาจเพิ่มสิ่งนี้เกิดขึ้นหลังจากอัพเดต MS และฉันยังพบ Addin ใน Excel ชื่อ "Team Foundation" จาก Microsoft ซึ่งฉันไม่ได้ติดตั้งด้วยความสมัครใจ


1

ฉันต้องการเพิ่มรายละเอียดเพิ่มเติมในคำตอบของ Stan # 2ด้วยเหตุผลด้านล่าง:

  • ฉันประสบปัญหานี้ด้วยตัวเองมากกว่าโหลครั้งและขึ้นอยู่กับเงื่อนไขของโครงการฉันเลือกระหว่างคำตอบเวทมนต์ของสเตจ # 1หรือ # 2 เมื่อฉันเผชิญหน้ากับมันต่อไปฉันก็เริ่มสงสัยว่าทำไมมันถึงเกิดขึ้นตั้งแต่แรก

  • ฉันต้องการเพิ่มคำตอบสำหรับผู้ใช้ Mac ด้วย

  • มีข้อ จำกัด ทั้งคำตอบที่เป็นไปได้เหล่านี้:

    • หากรหัสได้รับการป้องกัน (และคุณไม่รู้รหัสผ่าน) คำตอบ # 1จะไม่ช่วย
    • หากไม่มีการป้องกันรหัสแล้วตอบ # 2จะไม่ให้คุณแก้จุดบกพร่องรหัส

  1. มันอาจเกิดขึ้นเนื่องจากเหตุผลใด ๆ ด้านล่าง:

    • ระบบปฏิบัติการไม่จัดสรรทรัพยากรระบบให้กับกระบวนการ Excel ( วิธีแก้ปัญหา:เพียงแค่ต้องการเริ่มระบบปฏิบัติการ - อัตราความสำเร็จต่ำมาก แต่ทำงานได้หลายครั้ง)

    • P-code เป็นรหัสระดับกลางที่ใช้ใน Visual Basic (ก่อน. NET) และด้วยเหตุนี้จึงยังคงใช้ใน VBA มันเปิดใช้งานปฏิบัติการที่มีขนาดกะทัดรัดมากขึ้นโดยเสียค่าใช้จ่ายในการดำเนินการที่ช้ากว่า ทำไมฉันถึงพูดถึงรหัส p? เพราะบางครั้งมันเกิดความเสียหายระหว่างการประมวลผลหลายครั้งและไฟล์ขนาดใหญ่หรือเพียงเพราะการติดตั้งซอฟต์แวร์ (Excel) ก็เกิดความเสียหายที่ไหนซักแห่ง เมื่อรหัส p-corrupts การเรียกใช้โค้ดยังคงขัดจังหวะ สารละลาย: ในกรณีเหล่านี้จะถือว่ารหัสของคุณเริ่มเสียหายและโอกาสในอนาคตคือเวิร์กบุ๊ก Excel ของคุณยังได้รับความเสียหายโดยให้ข้อความเช่น "excel file เสียหายและไม่สามารถเปิดได้" ดังนั้นเป็นวิธีแก้ปัญหาอย่างรวดเร็วคุณสามารถพึ่งพาคำตอบ # 1 หรือคำตอบ # 2 ตามความต้องการของคุณ อย่างไรก็ตามอย่าเพิกเฉยต่อสัญญาณการทุจริต เป็นการดีกว่าที่จะคัดลอกโมดูลรหัสของคุณใน Notepad ลบโมดูลบันทึก & ปิดสมุดงานปิด excel ตอนนี้ให้เปิดเวิร์กบุ๊กใหม่และเริ่มสร้างโมดูลใหม่ด้วยรหัสที่คัดลอกไว้ก่อนหน้านี้ไปยังแผ่นจดบันทึก

  2. ผู้ใช้ Mac ลองใช้ตัวเลือกใด ๆ ด้านล่างและผู้ใช้จะทำงานได้อย่างแน่นอนทั้งนี้ขึ้นอยู่กับสถาปัตยกรรมระบบของคุณเช่นรุ่น OS และ Office

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc+ Esc(กดสองครั้งติดต่อกัน)

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

  1. การแก้ไข:เพื่อเอาชนะข้อ จำกัด ในการใช้คำตอบ # 1และคำตอบ # 2ฉันใช้ xlErrorHandlerพร้อมกับResumeคำสั่งในตัวจัดการข้อผิดพลาดหากรหัสข้อผิดพลาดคือ 18 จากนั้นการขัดจังหวะจะถูกส่งไปยังขั้นตอนการทำงานเป็นข้อผิดพลาด ตั้งค่าตัวจัดการด้วยคำสั่ง On Error GoTo รหัสข้อผิดพลาดที่ตรวจพบได้คือ 18 ขั้นตอนปัจจุบันถูกขัดจังหวะและผู้ใช้สามารถดีบักหรือจบกระบวนการได้ Microsoftให้ความระมัดระวังที่ไม่ใช้สิ่งนี้หากตัวจัดการข้อผิดพลาดของคุณมีคำสั่งดำเนินการต่อมิฉะนั้นตัวจัดการข้อผิดพลาดของคุณจะกลับไปที่คำสั่งเดิมเสมอ นั่นคือสิ่งที่เราต้องการในการหยุดชะงักของการเรียกใช้โค้ดที่ไม่มีความหมายที่ไม่ต้องการ


0

ชื่อเสียงปัจจุบันของฉันยังไม่อนุญาตให้โพสต์สิ่งนี้เป็นความคิดเห็น แก้ปัญหาวิธีการเพื่อเข้าสู่โหมดการแก้ปัญหากดสองครั้ง Ctrl + Break เล่นบนบันทึกไม่ได้แก้ปัญหาของฉัน แต่ฉันมีสองบิดที่ไม่คาดคิด:

  1. การวางโครงสร้างโครงการของฉันได้รับการป้องกันด้วยรหัสผ่านดังนั้นเพื่อเข้าสู่โหมดดีบักฉันต้องเข้าสู่โหมดนักพัฒนาก่อนคลิกที่โครงสร้างโครงการและป้อนรหัสผ่าน

  2. โครงการของฉันเป็นไฟล์เทมเพลต (.xmtl) ฉันเปิดไฟล์ด้วยดับเบิลคลิกซึ่งเปิดเป็น. xml ด้วย "1" ที่ท้ายชื่อไฟล์ก่อนหน้า ฉันแก้ไขข้อผิดพลาดตามคำสั่ง Stans และบันทึกเป็น ... ไฟล์ 1.xml เมื่อฉันเปิดเทมเพลตอีกครั้งคราวนี้เป็นเทมเพลตและต้องการใช้การแก้ไขข้อบกพร่องเดียวกันกับไฟล์นั้นข้อผิดพลาดก็หายไป! ฉันไม่ได้เปลี่ยนไฟล์นี้และยังไม่มีข้อผิดพลาดในการเรียกใช้แมโคร นี่หมายถึงฉันว่าข้อผิดพลาดไม่ได้อยู่ในไฟล์ แต่เป็นการตั้งค่า (ซ่อน) ใน Excel


-1

ดูเหมือนว่าปัญหาจะเกี่ยวข้องกับ Excel ในขณะนี้

ติดตั้งและแก้ไขใหม่ :) อื่น ๆ แล้วมันยากที่จะบอก


เราลองติดตั้งใหม่แม้ว่าผู้ใช้จะลืมรีบูตหลังจากที่ฝ่ายสนับสนุนทำสิ่งที่เขาทำ กำลังพยายามหลีกเลี่ยงการติดตั้ง Office อีกครั้ง แต่นี่อาจจะหลีกเลี่ยงไม่ได้ ... ขอบคุณ
Phil Whittington
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.