2010-10-13 17 views
5

Mam długotrwałe makro, w którym piszę okresowe wiadomości do wyjścia tylko po to, aby użytkownik wiedział, co się dzieje. Problem polega na tym, że dane wyjściowe nie są wyświetlane, dopóki makro się nie zakończy (o ile nie masz otwartego okna dialogowego Continue Waiting ?, o dziwo).Czy istnieje odpowiednik DoEvents w makrach Visual Studio?

Czy mimo to "opróżnić" kolejkę zdarzeń?

+0

To VB, więc czy DoEvents nie działają? –

+0

@Preet, to VBA (myślę), aw każdym razie nie widzę obiektu "Application" w intellisense, ale może brakuje mi niektórych odniesień? – Benjol

+0

Wystarczy użyć DoEvents, jest to instrukcja w języku VBA. –

Odpowiedz

0

W przypadku odwołania do formularzy systemu Windows można uzyskać dostęp do Application.DoEvents w normalny sposób.

Mam głównym IDE reaguje na aktualizacji systemu Windows i zamyka się w czasie rzeczywistym, podczas gdy makro nadal działa tylko z

DTE.SuppressUI = False 
    Threading.Thread.Sleep(5000) 

Jako takie Proponuję za pomocą standardowego DoEvents & Sleep(55) pętlę na 250 milisekund lub tak kiedy chcesz się upewnić, że interfejs użytkownika jest zaktualizowany, powinieneś załatwić sprawę, wraz z SuppressUI=False.

+0

Dobry pomysł, z tym wyjątkiem ... nie wydaje się, żeby to miało jakiś wpływ :) – Benjol

Powiązane problemy