Mam pewne (raczej) dobre przyzwyczajenie, że w większości procedur wstawiam na etapie ich tworzenia szereg instrukcji
Debug.Print w celu kontroli wartości lub postępu działania procedury. Uciążliwe jednak staje się w pewnym momencie 'przepełnienie' okna Immediate informacjami znajdującymi się tam. Jeżeli dodatkowo korzystam z Immediate aby wykonać szybkie instrukcje lub sprawdzić/zmienić zmienne to po krótkim czasie panuje tam chaos. Jak sobie radzić z podobnym problemem. Oto i kilka rozwiązań.
1. Moja najstarsza metoda to wywołanie na starcie procedury poniższej instrukcji, która rozdziela dotychczasowe zapisy pozwalając łatwo odnaleźć początek wyników przekazanych w obecny wywołaniu:
1 | Debug.Print String (30, "-" ), & Time |
2. Metoda druga to wykorzystanie darmowej aplikacji, którą ściągnąłem z sieci, a która nazywa się MZ-Tools. Aplikacja ta dodaje pasek narzędzi w środowisku IDE, na którym z łatwością można odnaleźć symbol gumki służący do czyszczenia okna Immediate.
3. Powyższe działanie jest o ułamek szybsze niż wykonanie 3 kroków: kliknięcie w Immediate >> Ctrl+a >> klawisz Del
4. To pomysł znaleziony ostatnio na forum, aby na początku procedury wywołać następującą instrukcję:
1 | Application.SendKeys "^g ^a {DEL}" |
Jedyną wadą tego rozwiązania jest to, że działa tylko w Excelu.
5. Inna zaskakująca idea to wykorzystanie techniki API. Nie zaprezentuję tego kodu tutaj gdyż jest długi i wg mnie nie wart zachodu.
6. Znalazłem też, że tak to określę, 'pokręcony' pomysł, który zamiast kasować wrzuca maksymalną ilość dostępnych w Immediate wierszy poniższą instrukcją:
1 | Debug.Print String (65535, vbCr) |
Podsumowując, każde rozwiązanie ma swoje wady. Ja pozostanę przy pierwszych trzech, które będę stosował adekwatnie do sytuacji i potrzeb. I to też polecam czytelnikom.