Excel VBA Uygulaması “Kod yürütme durduruldu” iletisi ile kendiliğinden duruyor


151

Web'de görebildiğim kadarıyla, bu oldukça yaygın bir şikayet, ancak cevaplar daha nadir görünüyor. Sorun şudur:

Bir dizi kullanıcının makinesinde mükemmel çalışan bir dizi Excel VBA uygulamamız var. Ancak bir makinede belirli kod satırlarında dururlar. Her zaman aynı çizgilerdir, ancak bu çizgilerin birbiriyle hiçbir ortak yanı yoktur.

Durdurmadan sonra F5'e (çalıştır) basarsanız, uygulama devam eder, bu yüzden neredeyse bir kırılma noktası eklenmiş gibi. Menüden 'tüm molaları kaldır'ı seçmeyi ve hatta bir mola eklemeyi ve tekrar kaldırmayı denedik.

Bu sorunu daha önce tek uygulamalarla yaşadık ve modülleri kodunu keserek, derleyerek ve daha sonra tekrar yapıştırarak 'koruduk'.

Sorun şimdi tek bir .xls yerine Excel'in kendisiyle ilgili gibi görünüyor, bu yüzden bunu nasıl yöneteceğimizden biraz emin değiliz.

Herhangi bir yardım minnetle kabul edilir :)

Teşekkürler,

Philip Whittington


2
Kullanıcı acil kaçış herhangi bir işlem ortasında mı? Veya kaçış anahtarı gönderen başka bir uygulama var mı?
shahkalpesh

1
Tüm Kesme Noktalarını Kaldır'ı seçtikten sonra , VBA projesini yeniden derleyip kaydettiniz mi? Word VBA'da, daha önce kaldırılmış kesme noktalarının hala bir ara vermeye neden olduğu ilgili bir sorun gördüm.
Dirk Vollmar

İnfaz sırasında hiçbir şey işlenmiyor, shahkalpesh. Divo - teşekkürler, onları tam olarak bu sırayla denememiş olabilirim. Şimdi yapacağım ...
Phil Whittington

Divo'nun yorumuna ek olarak, ilgili satırları ve hata ayıklamayı durduracak herhangi bir satırı yorumlamak yararlı olabilir, daha sonra bunlar önerilmeyebilir ve kod yeniden derlenebilir (tekrar).
Fionnuala

Ve bahsetmeyi unuttum: Aslında bir yeniden oluşturmayı tetiklemek için normalde bir satırı değiştirmek ve ardından kaynak kodunu değiştirilmiş olarak işaretlemek için imleci bir sonraki satıra taşımak gerekir (örn. Bir değişiklik yapın, imleci aşağı hareket ettirin, taşıyın imleci yukarı kaldırın ve değişikliği manuel olarak geri alın)
Dirk Vollmar

Yanıtlar:


405

İkinci bir çözüm buldum.

  1. Açılır pencerede "Hata Ayıkla" düğmesine basın.
  2. Ctrl+ Düğmesine Pause|Breakiki kez basın .
  3. Devam etmek için oynat düğmesine basın.
  4. Tamamlandıktan sonra dosyayı kaydedin.

Umarım bu birine yardımcı olur.


12
+1: Vay be, bu yazı beni bir acı dünyasından kurtardı. Tuhaf bir sorun için beklenmedik bir çözüm. [Ctrl + Break] tuşuna iki kez bastıktan ve devam ettikten sonra dosyayı kaydettim. Bundan sonra, dosyayı kapatıp yeniden açtığımda sorun artık ortaya çıkmadı.
dbenham

28
Eğer bir cevap bir oylamayı hak ettiyse, işte budur. Mükemmel cevap.
The_Barman

4
Bu bana çok yardımcı oldu. Bu cevap 1000 upvets hak ediyordu. Son 4-5 gün boyunca bu sorundan rahatsız oldum. Bu mükemmel çalıştı.
demouser123

25
Bunun neden işe yaradığını bilen var mı? Yoksa nereden geliyor? Bu sihir mi?
ZX9

4
Hala 2017'de bana yardım ediyor. Teşekkür ederim!
Döşeme

16

Bu sorun, Office / Windows içindeki garip bir tuhaflıktan kaynaklanır.

Aynı VBA kodunu geliştirdikten ve son birkaç gün içinde yüzlerce kez (tam anlamıyla) çalıştırdıktan sonra, şimdi bu soruna rastladım. Farklı olan tek şey, bu şaşırtıcı problemi yaşamadan hemen önce, VBA kodunun yürütülmesini alışılmışın dışında bir yöntemle sonlandırdım.

Tüm geçici dosyaları temizledim, yeniden başlattım, vb ... Tüm bunlardan sonra kodu tekrar çalıştırdığımda hala sorunu aldım - ilk döngüye girmeden önce. Bu mantıklı "basın 'ayıklama' açılır düğmesini ve ardından iki kez [Ctrl + Break] tuşuna basın ve bundan sonra durur olmadan devam edebilir" Ofis / Windows'un birlikte bir şey yürütülmesine açıklamadı çünkü. Bu sıkışmış.

Gereksiz Ctrl + Break eylemi muhtemelen kalıcı yürütmeyi çözer.


14

Bir çözüm burada :

Bu sorunun çözümü, makronuzun ilk satırına “Application.EnableCancelKey = xlDisabled” kod satırını eklemektir. Bu, sorunu giderir ve makroyu “Kod hata iletisini almadan başarılı bir şekilde yürütebilirsiniz. yürütme kesintiye uğradı ”.

Ancak, bu kod satırını ekledikten sonra artık Ctrl + Break kullanamadım. Yani işe yarıyor ama çok da değil.


Teşekkürler Stan - zaman baskısı altındaysanız ve sadece çalışmasını istiyorsanız kesinlikle bir çözüm! Çok kullanışlı.
Phil Whittington

1
Aynı yürütmede olarak ayarlayarak yeniden etkinleştirebilirsiniz xlInterrupt. (Kod yürütme bittiğinde de otomatik olarak yeniden etkinleştirilir.) Diğer cevabınız benim için çalıştı, ancak en kötü durum bu geçici bir düzeltme olarak kullanılabilir. Application.EnableCancelKey
Kodithic

2
Doğru cevap - ve tek doğru cevap - yukarıda. “Application.EnableCancelKey = xlDisabled” dahil olmak üzere herhangi bir kod satırının eklenmesi sorunu yalnızca başka bir satıra kaydırır. Genellikle, yeni 'kesme noktası' tam olarak eklediğiniz çizgidir. Cevabınızı küçümsemememin tek nedeni, son on yılda tekrar tekrar kendim kullanmaya başvurmam.
Nigel Heffernan

6

Makro çalışmadığı sırada ctrl + break vurmak sorunu düzeltti buldum.


3

Her zamanki düzeltici şeyleri denerdim: - Rob Bovey'in VBA Kod Temizleyicisini VBA Kodunuzda çalıştırın - özellikle bilgisayardaki COM ve .NET eklentileri üzerindeki tüm eklentileri kaldırın - Tüm kullanıcıları silin .EXD dosyaları (MSoft Güncelleme uyumsuzlukları) - Excel'i çalıştırın Kullanıcı sisteminde Algıla ve Onar - kullanıcının .xlb dosyasının boyutunu kontrol edin (20-30K olmalıdır) - Yeniden başlatın ve tüm kullanıcıların Temp dosyalarını silin


2

Katkılarından dolayı herkese teşekkürler. Bu sorun, Denetim Masası'nda ONARIM seçilerek çözüldü. Bu açıkça Office'in yerel COM bileşenlerinin bazılarını yeniden kaydeder ve REINSTALL'ın yapmadığı şeyleri yapar. İkincisi sadece bir kontrol listesinden geçer ve bazen zaten kurulu ise orada ne olduğunu kabul eder. Daha sonra bu Microsoft yerine benim hatam olduğunu düşünüyorum rağmen (bu aynı zamanda diğer makinelerde çalışma rağmen) kullanıcının makinede COM birlikte çalışma için kendi .NET dll kayıt ile ayrı bir sorun vardı. Tekrar teşekkürler, gerçekten minnettarım.


2

Bir karmaşık Excel VBA uygulamasının geliştirilmesi sırasında bu sorunla birkaç kez karşılaştım. Bazen Excel VBA nesnesini oldukça rastgele kırmaya başladı. Ve tek çare makineyi yeniden başlatmaktı. Yeniden başlattıktan sonra Excel genellikle normal şekilde çalışmaya başladı.

Yakında bu sorunun olası çözümünün makro çalışmadığında CTRL + Break tuşlarına basmak olduğunu öğrendim. Belki bu da sana yardımcı olabilir.


2

Ben de sadece excel 2007 foobar.xlsm (makro etkin) çalışma kitabı ile "Kod yürütme kesildi" sadece sağ köşedeki kırmızı X çalışma kitabını çalıştıran kapatmak çalıştırarak kullanarak kullanarak bu sorunu yaşadım tümü veya herhangi bir "başlat" formu, çalışma kitabı veya çalışma sayfası makroları. Sahip olduğum seçenekler "End" (Son) veya "Continue (Devam)" idi, Debug her zaman gri renkteydi. Ben önceki bir poster olarak önerilen Denetim Masası-> Programlar ve Özellikler-> sağ tıklayın "Microsoft Office Proffesional 2007" (benim durumumda) -> değişim-> onarım.

Bu benim için sorunu çözdü. Bunu MS güncellemesinden kısa bir süre sonra ekleyebilirim ve ayrıca Excel'de Microsoft'tan "Team Foundation" adlı bir eklenti buldum ve kesinlikle gönüllü olarak yüklemedim


1

Aşağıdaki nedenlerden dolayı Stan'ın cevabı # 2'ye daha fazla ayrıntı eklemek istiyorum :

  • Bu konuyu bir düzineden fazla kez karşıladım ve proje koşullarına bağlı olarak stan'ın voodoo sihirli cevabı # 1 veya # 2'yi seçtim . Tekrar karşı karşıya kalmaya devam ettiğimde, neden ilk etapta olduğunu daha meraklı hale getiriyorum.

  • Mac kullanıcıları için de cevap eklemek istiyorum.

  • Bu olası yanıtların her ikisinde de sınırlamalar vardır:

    • kod korunuyorsa (ve parola bilmiyorsanız) # 1 yanıtı yardımcı olmaz.
    • kod korumasızsa, # 2 yanıtı kodda hata ayıklamanıza izin vermez.

  1. Aşağıdaki nedenlerden herhangi biri nedeniyle olabilir:

    • İşletim sistemi, sistem kaynaklarını Excel işlemine ayırmıyor. ( Çözüm: Birinin işletim sistemini başlatması gerekir - başarı oranı çok düşüktür ancak birçok kez çalıştığı bilinmektedir)

    • P kodu, Visual Basic'te (.NET'ten önce) kullanılan ara koddur ve bu nedenle hala VBA'da kullanılır. Yavaş yürütme pahasına daha kompakt bir yürütülebilir dosyayı etkinleştirdi. Neden p kodu hakkında konuşuyorum? Bazen birden fazla yürütme ve büyük dosyalar arasında bozulduğu için veya sadece yazılımın (Excel) yüklenmesi nedeniyle bir yere bozuldu. P kodu bozulduğunda. kod yürütmesi kesintiye uğrar. Çözüm: Bu gibi durumlarda, kodunuzun bozulmaya başladığı ve gelecekteki olasılıkların Excel çalışma kitabınızın da size "excel dosyası bozuk ve açılamıyor" gibi iletiler vererek bozuk olacağı varsayılır. Bu nedenle, hızlı bir çözüm olarak, gereksinimlerinize göre 1 numaralı cevaba veya 2 numaralı cevaba güvenebilirsiniz. Ancak, asla yolsuzluk belirtilerini görmezden gelmeyin. Kod modüllerinizi not defterine kopyalamak, modülleri silmek, çalışma kitabını kaydetmek ve kapatmak, excel'i kapatmak daha iyidir. Şimdi, çalışma kitabını yeniden açın ve daha önce not defterine kopyalanan kodla yeni modüller oluşturmaya başlayın.

  2. Mac kullanıcıları, aşağıdaki seçeneklerden herhangi birini deneyin ve sistem mimarinize bağlı olarak kesinlikle çalışacaktır, yani işletim sistemi ve Office sürümü

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc+ Esc(Arka arkaya iki kez basın)

Makro, geçerli görevi hemen bitirirken yürütmeyi askıya aldığından yukarıdaki tuş bileşimlerini kullanarak mola moduna girersiniz. Bu, Adım 2'nin yerine geçer.

  1. Çözüm: Yanıt # 1 ve yanıt # 2'yi kullanma sınırlamasının üstesinden gelmek için , hata kodu 18 ise Hata İşleyicisi'ndeki ifadeyle xlErrorHandlerbirlikte kullanırım. Resumeişleyicisi bir Hata Durumunda GoTo deyimi ile kuruldu. Yakalanabilir hata kodu 18'dir. Geçerli prosedür kesilir ve kullanıcı prosedürde hata ayıklayabilir veya sonlandırabilir. Microsoft , hata işleyiciniz özgeçmiş deyimi devam ettirirse bunu kullanmamaya dikkat eder, hata işleyiciniz her zaman aynı ifadeye geri döner. Kod yürütmenin istenmeyen anlamsız kesintilerinde tam olarak bunu istiyoruz.


0

Şu anki itibarım bunu henüz yorum olarak göndermeme izin vermiyor. Hata ayıklama moduna girmek için Stans çözümü, iki kez Ctrl + Break tuşlarına basın, oynatın, kaydedin sorunumu çözdü, ancak iki beklenmedik bükülme var:

  1. Proje ekibim parola korumalı, bu nedenle Hata Ayıklama Moduna girmek için önce Geliştirici moduna girmek, proje yapısını tıklamak ve parolayı girmek zorunda kaldım.

  2. Projem bir şablon dosyası (.xmtl). Dosyayı önceki dosya adının sonunda "1" ile .xml olarak açan çift tıklama ile açtım. Stans talimatı ile hatayı düzelttim ve şöyle sakladım ... 1.xml dosyası. Sonra şablonu tekrar açtım, bu kez şablon olarak ve aynı hata düzeltmesini o dosyaya uygulamak istediğimde, hata gitti! Bu dosyayı değiştirmedim ve Makro'yu yürütmede hala bir hata yok. Bu, hatanın aslında dosyada değil, Excel'deki (gizli) bir ayarda olduğu anlamına gelir.


-1

Sorun şimdi Excel'in kendisiyle ilgili gibi görünüyor

Yeniden yükleyin ve yama :) Diğer o zaman zor söylemek.


Her ne kadar kullanıcı destek adam yaptıktan sonra yeniden başlatmayı unutmuş olsa da, bir yeniden yükleme denedik. Office'i yeniden yüklemekten kaçınmaya çalışıyorum, ancak bu kaçınılmaz olabilir ... Teşekkürler
Phil Whittington
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.