SolidWorks API - Przerwanie makra za pomocą Escape

Cze wszystkim

Żałuję, że nie mogę wyświetlić MsgBox, jeśli użytkownik naciśnie "ESCAPE" podczas działania mojego makra.

Dodałem na początku mojego makra:

     Excel.Application.OnKey "{ESC}", "Ucieczka "

I ustaw MsgBox w następującym Sub:

Sub Escape()
        Jeśli MsgBox("Zatrzymać makro?", vbTakNie + vbQuestion) = vbTak Następnie
            Wyjdź z subwoofera
        Inaczej
            Podsumowanie  'Wznawia wykonywanie
        Zakończ jeżeli:
Koniec subwoofera

 

Ale to nie działa. Czy ktoś ma pomysł?

Z góry dziękuję.

1 polubienie

Witam

Korzystasz z oprogramowania lub Excela?

Czy to nie jest trochę niebezpieczne, aby móc zatrzymać kod w dowolnym momencie? Mam nadzieję, że czytasz tylko na swoich plikach SW?

Do zobaczenia...

1 polubienie

Witam

Jeśli kod nie zostanie uruchomiony, nic się nie dzieje. Testowałem tylko z Application.OnKey i działa świetnie.

Z drugiej strony ta funkcja musi być aktywna przez cały czas, więc prawdopodobnie powinna być umieszczona w arkuszu, w którym powinna odbywać się kontrola działań użytkownika.

1 polubienie

@Remrem

Korzystam z oprogramowania, ale Application.OnKey jest częścią biblioteki Excel. Nie tylko czytam, ale moje makro komunikuje się z naszym ERP za pośrednictwem WebServices...

@Cyril.f

Czy działa z makra SW lub Excel?

1 polubienie

Excel, nie testowany na oprogramowaniu.

Moim zdaniem nie będzie możliwe korzystanie z procedur Excela w oprogramowaniu. Po szybkim wyszukiwaniu spójrz na poziom vbkey, który ma zastosowanie do forów.

Dziękuję Cyrylu.

Działa zgodnie z oczekiwaniami.

Sub Control_KeyDown()
   
    DoWydarzenia
    Jeśli (GetAsyncKeyState(vbKeyEscape)) Następnie
        Jeśli MsgBox("Zatrzymać makro?", vbTakNie + vbQuestion) = vbTak Następnie
            Koniec
        Inaczej
        Zakończ jeżeli:
    Zakończ jeżeli:
        
Koniec subwoofera

Proszę.