Afișarea unui mesaj în bara de stare din Word și Excel

Word și Excel permit afișarea de informații în bara de stare. Aceasta este o modalitate simplă de a indica utilizatorului ce se petrece în macrocomandă fără a opri execuția codului (sau, mai important, fără a întrerupe munca utilizatorului ca să facă clic pe un buton pentru a închide o casetă de tip mesaj).

Prin afișarea informației în bara de stare în timp ce rulează macrocomanda, utilizatorul poate fi informat nu numai ce face macrocomanda, dar și ce comandă este executată.

Desigur, utilizatorul ar putea să nu fie atent la bara de stare.

Deci, pentru a afișa informații importante, se va folosi caseta de tip mesaj (message box) sau alt tip de casetă, de exemplu caseta de introducere date (input box). Aceste casete forțează utilizatorul să fie atent, pentru că macrocomanda se oprește și așteaptă ca utilizatorul să închidă caseta.

Cum Se Poate Evita Atenționarea Utilizatorului

O problemă care poate să apară uneori este că utilizatorul consideră că o macrocomandă a înghețat, s-a blocat, a intrat într-o buclă infinită sau nu a reușit să funcționeze, deoarece nu există modificări vizibile pe ecran, în timp ce macrocomanda funcționează corect în fundal. În cazul în care o macrocomandă necesită mult timp pentru a fi executată, actualizările din bara de stare vor permite utilizatorului să vadă că macrocomanda funcționează.

Dar principalul dezavantaj al afișării mesajelor în bara de stare este că utilizatorii ar putea să nu fie atenți la acele mesaje, dacă au ascuns bara de mesaje sau nu se așteaptă să apară mesaje acolo.

CUM SE POATE ASCUNDE BARA DE STARE

Bara de stare se poate ascunde doar folosind cod:

Sub HideStatusBar()
Application.CommandBars("Status Bar").Visible = False 
End Sub

Dacă o aplicație folosește bara de stare pentru a oferi informațiilor utilizatorului (așa cum fac Word și Excel), afișarea unui mesaj nu ar putea fi o problemă pentru utilizatorii atenți. Dar dacă există vreo îndoială, utilizatorul va fi anunțat că informațiile vor fi afișate în bara de stare. De exemplu, la începutul unei macrocomenzi se poate afișa o casetă de mesaj care spune utilizatorului să urmărească bara de stare pentru actualizări.

Pentru a afișa un mesaj în bara de stare din Excel, se setează prroprietatea StatusBar a obiectului Application la un șir de caractere. Următorul exemplu afișează o informație în bara de stare:

Application.StatusBar = "Excel este ocupat cu formatarea fisierului. Va rugam sa asteptati..." 

De obicei, orice informație afișată pe bara de stare rămâne afișată acolo până când se schimbă cu alta, până când utilizatorul face clic pe ceva sau până când aplicația afișează acolo un mesaj.

De exemplu, după afișarea unui mesaj în bara de stare se invocă comanda Copy în Excel, Excel afișează în bara de stare mesajul normal de copiere, „Selectați destinația și apăsați ENTER sau alegeți Lipire”, ștergând mesajul anterior. Mesajele din aplicație elimină mesajele create de utilizator.

Dacă se afișează un mesaj pe bara de stare în timp ce se execută o macrocomandă, mesajul ar trebui să fie actualizat în macrocomandă pentru ca mesajul învechit și potențial înșelător să nu rămână în bara de stare după ce macrocomanda a fost executată. De exemplu, se poate afișa un alt mesaj care spune că macrocomanda s-a terminat sau pentru a șterge mesajul din bara de stare prin afișarea unui șir gol de caractere.

Pentru a șterge mesajul din bara de stare, i se atribuie un șir gol, ca în comanda:

Application.StatusBar = ""

Pentru a vedea efectul acestei comenzi, ea poate fi rulată din Visual Basic Editor cu Word sau Excel (ferestrele Editor și cea a aplicației nu vor fi maximizate - trebuie să fie vizibile în același timp, pentru a vedea efectul comenzii). Se poate verifica scriind mai întâi o comandă care afișează informații în bara de stare (de exemplu, Application.StatusBar = "Hello, World!"), apoi comanda care șterge informația din bara de stare Application.StatusBar = "":

Application.StatusBar = "Hello, World!"
Application.StatusBar = ""

INDICATOARELE DE PROGRES POT FI SCRISE ÎN MODURI DIFERITE

În timpul proceselor îndelungate, afișarea unui indicator de progres în bara de stare este deosebit de utilă, astfel încât utilizatorul să poată înțelege dacă procesul este încă în curs de desfășurare și face progrese. Indicarea progresului este de obicei codificată într-un bloc buclă. De exemplu, este posibil să afișați o citire a progresului, cum ar fi „Excel lucrează pe foaia 9 din 150”. Chiar mai simplu, adăugarea unui număr tot mai mare de puncte la sfârșitul mesajului de stare oferă un indiciu al progresului, deși nu oferă o idee despre cât timp va dura procedura. Iată cum se pot adăuga puncte la un șir:

strPeriod = strPeriod & "."