Z tego, co widzę w sieci, jest to dość powszechna skarga, ale odpowiedzi wydają się być rzadsze. Problem jest taki:
Mamy wiele aplikacji Excel VBA, które działają doskonale na wielu komputerach użytkowników. Jednak na jednej maszynie zatrzymują się na pewnych liniach kodu. Są to zawsze te same wiersze, ale wydaje się, że nie mają one ze sobą nic wspólnego.
Jeśli naciśniesz F5 (uruchom) po zatrzymaniu, aplikacja będzie kontynuowana, więc jest prawie jak punkt przerwania. Próbowaliśmy wybrać „usuń wszystkie przerwy” z menu, a nawet dodać przerwę i usunąć ją ponownie.
Mieliśmy już ten problem z pojedynczymi aplikacjami i `` zarzuciliśmy '' go, wycinając kod z modułów, kompilując, a następnie wklejając go z powrotem itp.
Wydaje się, że problem dotyczy teraz samego programu Excel, a nie pojedynczego pliku .xls, więc nie jesteśmy pewni, jak sobie z tym poradzić.
Każda pomoc zostanie przyjęta z wdzięcznością :)
Dzięki,
Philip Whittington
Odpowiedzi:
Znalazłem drugie rozwiązanie.
Mam nadzieję, że to komuś pomoże.
źródło
Ten problem pochodzi z dziwnego dziwactwa w pakiecie Office / Windows.
Po opracowaniu tego samego fragmentu kodu VBA i uruchomieniu go setki razy (dosłownie) w ciągu ostatnich kilku dni napotkałem ten problem. Jedyną różnicą jest to, że tuż przed tym kłopotliwym problemem przypadkowo zakończyłem wykonywanie kodu VBA niekonwencjonalną metodą.
Wyczyściłem wszystkie pliki tymczasowe, zrestartowałem komputer itp. Kiedy po tym wszystkim ponownie uruchomiłem kod, nadal występował problem - zanim wszedłem do pierwszej pętli. Sensowne jest, aby „nacisnąć przycisk„ Debuguj ”w wyskakującym okienku, a następnie dwukrotnie nacisnąć [Ctrl + Break] i po tym można kontynuować bez zatrzymywania” ponieważ coś w kombinacji Office / Windows nie zwolniło wykonania. Zablokowało się.
Nadmiarowa akcja Ctrl + Break prawdopodobnie rozwiązuje długotrwałe wykonanie.
źródło
Oto jedno rozwiązanie :
Ale po wstawieniu tego wiersza kodu nie mogłem już używać Ctrl + Break. Więc to działa, ale nie bardzo.
źródło
xlInterrupt
. (To również automatycznie włącza się ponownie po zakończeniu wykonywania kodu). Twoja druga odpowiedź zadziałała dla mnie, ale w najgorszym przypadku można to wykorzystać jako tymczasową poprawkę. Więcej informacji na temat Application.EnableCancelKeyZnalazłem naciśnięcie ctrl + break, gdy makro nie było uruchomione, rozwiązało problem.
źródło
Spróbowałbym zwykłych środków zaradczych: - Uruchom narzędzie VBA Code Cleaner Roba Boveya na swoim kodzie VBA - usuń wszystkie dodatki na komputerze użytkownika, szczególnie dodatki COM i .NET - Usuń wszystkie pliki .EXD użytkowników (niezgodności MSoft Update) - Uruchom program Excel Wykryj i napraw w systemie użytkowników - sprawdź rozmiar pliku .xlb użytkownika (powinien wynosić 20-30 KB) - Uruchom ponownie, a następnie usuń pliki tymczasowe wszystkich użytkowników
źródło
Dziękuję wszystkim za wkład. Ten problem został rozwiązany, wybierając opcję NAPRAWA w Panelu sterowania. Wydaje mi się, że to jawnie ponownie rejestruje niektóre natywne komponenty COM pakietu Office i robi rzeczy, których REINSTALL nie robi. Spodziewam się, że ten ostatni po prostu przechodzi przez listę kontrolną i czasami akceptuje to, co jest, jeśli jest już zainstalowany. Wtedy miałem osobny problem z zarejestrowaniem własnej biblioteki .NET dll dla współpracy COM na komputerze użytkownika (pomimo tego działającego również na innych maszynach), chociaż myślę, że to był mój błąd, a nie Microsoft. Jeszcze raz dziękuję, naprawdę to doceniam.
źródło
Kilka razy zetknąłem się z tym problemem podczas tworzenia jednej złożonej aplikacji Excel VBA. Czasami program Excel zaczął dość przypadkowo łamać obiekt VBA. Jedynym lekarstwem było ponowne uruchomienie komputera. Po ponownym uruchomieniu Excel zwykle zaczynał działać normalnie.
Wkrótce odkryłem, że możliwym rozwiązaniem tego problemu jest jednokrotne naciśnięcie CTRL + Break, gdy makro NIE jest uruchomione. Może to też może ci pomóc.
źródło
Miałem ten problem również podczas korzystania z programu Excel 2007 ze skoroszytem foobar.xlsm (z włączoną obsługą makr), który powodował wyświetlenie komunikatu „Wykonywanie kodu zostało przerwane”, po prostu próbując zamknąć skoroszyt na czerwonym X w prawym rogu bez makr uruchomionych w wszystkie lub dowolne makra formularza, skoroszytu lub arkusza „inicjalizuj”. Dostępne opcje to „Koniec” lub „Kontynuuj”. Debugowanie było zawsze wyszarzone. Zrobiłem tak, jak sugerował poprzedni plakat Panel sterowania-> Programy i funkcje-> kliknij prawym przyciskiem myszy „Microsoft Office Proffesional 2007” (w moim przypadku) -> zmień-> napraw.
To rozwiązało problem. Mogę dodać, że stało się to niedługo po aktualizacji MS i znalazłem również dodatek w Excelu o nazwie "Team Foundation" firmy Microsoft, którego z pewnością nie zainstalowałem dobrowolnie
źródło
Chciałbym dodać więcej szczegółów do odpowiedzi Stana nr 2 z poniższych powodów:
Sam miałem do czynienia z tym problemem kilkanaście razy iw zależności od warunków projektu wybierałem między magiczną odpowiedzią voodoo # 1 lub # 2 Stana. Kiedy stawałem przed tym ponownie, stałem się bardziej dociekliwy, dlaczego tak się dzieje na pierwszym miejscu.
Chciałbym dodać odpowiedź również dla użytkowników komputerów Mac.
Istnieją ograniczenia dotyczące obu tych możliwych odpowiedzi:
Może się to zdarzyć z jednego z poniższych powodów:
System operacyjny nie przydziela zasobów systemowych do procesu programu Excel. ( Rozwiązanie: wystarczy uruchomić system operacyjny - wskaźnik sukcesu jest bardzo niski, ale wiadomo, że działa wiele razy)
Kod P jest kodem pośrednim, który był używany w Visual Basic (przed .NET) i dlatego jest nadal używany w VBA. Umożliwiło to bardziej kompaktowy plik wykonywalny kosztem wolniejszego wykonywania. Dlaczego mówię o p-kodzie? Ponieważ czasami ulega uszkodzeniu między wieloma uruchomieniami i dużymi plikami lub po prostu z powodu instalacji oprogramowania (Excel) gdzieś się zepsuł. Kiedy p-kod jest uszkodzony. wykonanie kodu jest ciągle przerywane.Rozwiązanie: W takich przypadkach zakłada się, że kod zaczął się uszkadzać i istnieje prawdopodobieństwo, że w przyszłości skoroszyt programu Excel również ulegnie uszkodzeniu, wyświetlając komunikaty typu „plik Excel uszkodzony i nie można go otworzyć”. Dlatego jako szybkie rozwiązanie możesz polegać na odpowiedzi nr 1 lub odpowiedzi nr 2, zgodnie z własnymi wymaganiami. Jednak nigdy nie ignoruj oznak korupcji. Lepiej jest skopiować moduły kodu w notatniku, usunąć moduły, zapisać i zamknąć skoroszyt, zamknąć program Excel. Teraz ponownie otwórz skoroszyt i zacznij tworzyć nowe moduły z kodem skopiowanym wcześniej do notatnika.
Użytkownicy komputerów Mac, wypróbuj jedną z poniższych opcji, a z pewnością będą działać w zależności od architektury systemu, tj. Wersji systemu operacyjnego i Office
Zostaniesz przełączony w tryb przerwania przy użyciu powyższych kombinacji klawiszy, ponieważ makro zawiesi wykonywanie natychmiast kończąc bieżące zadanie. To jest zamiennik kroku 2.
xlErrorHandler
wraz zResume
instrukcją w module obsługi błędów, jeśli kod błędu to 18. Następnie przerwanie jest wysyłane do uruchomionej procedury jako błąd, który można przechwycić przez błąd program obsługi skonfigurowany za pomocą instrukcji On Error GoTo. Kod błędu, który można wykryć to 18. Bieżąca procedura została przerwana, a użytkownik może debugować lub zakończyć procedurę. Firma Microsoft ostrzega, aby nie używać tego, jeśli program obsługi błędów ma instrukcję resume, w przeciwnym razie program obsługi błędów zawsze powraca do tej samej instrukcji. Dokładnie tego chcemy w niechcianych bezsensownych przerwach w wykonywaniu kodu.źródło
Moja obecna reputacja nie pozwala jeszcze na opublikowanie tego jako komentarza. Rozwiązanie Stansa, aby wejść w tryb debugowania, naciśnij dwukrotnie Ctrl + Break, graj dalej, zapisywanie rozwiązało mój problem, ale mam dwa nieoczekiwane zwroty akcji:
Mój projekt jest chroniony hasłem, więc aby wejść w tryb debugowania musiałem najpierw wejść w tryb programisty, kliknąć na strukturę projektu i wpisać hasło.
Mój projekt to plik szablonu (.xmtl). Otworzyłem plik poprzez dwukrotne kliknięcie, co otwiera go jako .xml z „1” na końcu poprzedniej nazwy pliku. Naprawiłem błąd zgodnie z instrukcją Stansa i zapisałem go jako ten ... plik 1.xml. Kiedy następnie ponownie otworzyłem szablon, tym razem jako szablon, i chciałem zastosować tę samą poprawkę błędu do tego pliku, błąd zniknął! Nie zmieniłem tego pliku i nadal nie ma błędu podczas wykonywania makra. Oznacza to dla mnie, że błąd nie jest w rzeczywistości w pliku, ale w (ukrytym) ustawieniu w programie Excel.
źródło
Zainstaluj ponownie i załataj :) Poza tym trudno to stwierdzić.
źródło