Oct 26 2009

Podstawowa interakcja z użytkownikiem

Posted by Marcin

Nic nie irytuje użytkowników makr bardziej, niż "martwy" ekran Excela podczas pracy makra i brak jakiejkolwiek informacji o tym co się dzieje: czy makro jeszcze pracuje, czy się już zawiesiło? Aby temu zaradzić przydałaby się choćby podstawowa komunikacja między komputerem (Excelem) a użytkownikiem.

Najbardziej podstawową czynnością, a zarazem najłatwiejszą i najszybszą jest zmiana kursora na znaną nam z innych aplikacji klepsydrę, a także poinformowanie użytkownika, że w danym czasie wykonywane jest makro.

Kursor możemy zmienić na pomocą instrukcji Application.Cursor = xlWait. Natomiast najprostszym i najszybszym sposobem na uproszczoną komunikację z użytkownikiem jest zmiana zawartości tzw. paska statusu (na dole Excela). Możemy tam umieścić dowolny tekst statyczny lub dynamiczny (o tekście dynamicznym, np. pasku postępu będziecie mogli poczytać w jednym z późniejszych postów). Tekst statyczny umieszczamy w następujący sposób: Application.StatusBar = "Nasz tekst". Oczywiście po wykonaniu wszystkich czynności musimy przywrócić zarówno standardowy kursor jak i wymazać nasz tekst z paska statusu.

Zatem w całości przykładowa struktura makra może wyglądać następująco (uwzględniająca również opisane w poście o przyspieszaniu wykonywania makra wyłączenie odświeżania ekranu):

Sub NaszeMakro()
 
'wyłączamy odświeżanie ekranu, zmieniamy kursor
'i wyświetlamy tekst "Czekaj…"
	With Application
		.ScreenUpdating = False
		.Cursor = xlWait
		.StatusBar = "Czekaj..."
	End With
 
'KOD NASZEGO MAKRA
 
'przywracamy standardowe wartości ekranu/kursora
'i paska statusu
	With Application
		.ScreenUpdating = True
		.Cursor = xlDefault
		.StatusBar = False
	End With
 
End Sub

Konstrukcja With Application … End With powoduje, że nie musimy za każdym razem wpisywać słowa "Application", a kolejne linijki zaczynamy od znaku kropki i reszty instrukcji.

Dzięki temu prostemu - jak widzicie - zabiegowi Wasze makra będą szybsze (brak migotania) oraz będą wyglądać bardziej profesjonalnie (kursor w formie klepsydry sugerującej oczekiwanie oraz tekst na pasku statusu).

Powiązane artykuły:

Filed under : VBA, Wszystkie | No Comments »

Leave a Reply