Readucerea cursorului la poziția de dinaintea executării procedurii

După terminarea rulării macrocomenzii, cursorul ar trebui să se afle în poziția în care se afla înainte de începerea macrocomenzii pentru ca utilizatorul să își continue munca. Această poziție depinde de situație, dar iată trei sugestii simple:

  • De obicei, veți dori să îi lăsați pe utilizatori să vadă același document la care lucrau atunci când au început să ruleze macrocomanda. Există câteva excepții evidente, cum ar fi atunci când procedura creează un nou fișier pentru utilizator și utilizatorul se așteaptă să vadă acel fișier, dar principiul general se aplică în majoritatea situațiilor.
  • Dacă un fișier este în mod esențial neatins (cel puțin din punctul de vedere al utilizatorului) de către macrocomandă, cursorul de inserare intermitent (selecția) ar trebui probabil plasat acolo unde a fost când utilizatorul a început să ruleze procedura. Pentru a restabili selecția, puteți defini un interval la începutul procedurii și la sfârșitul procedurii să mutați selecția înapoi la acel interval. În unele aplicații, puteți utiliza, de asemenea, un marcaj sau un interval (range) numit, dar dacă faceți acest lucru, asigurați-vă că îl ștergeți ulterior. Nu uitați, nu lăsați resturi în urmă.

Codul de mai jos este un exemplu de macrocomandă care poate fi încercat. În documentul Word deschis, se salvează locația cursorului folosind un semn de carte (bookmark). Apoi mută cursorul câteva linii mai jos și afișează un mesaj pentru ca să puteți vedea noua poziție a cursorului. La final, readuce cursorul la poziția inițială:

Readucerea cursorului la poziția inițială

1. Sub SaveAndRestoreCursor()
2.
3. 'salvarea poziției cursorului folosind un semn de carte - bookmark
4. ActiveDocument.Bookmarks.Add Name:=''OriginalInsertionPoint", _
      Range:=Selection.Range
5.
6. 'mutarea cursorului opt linii mai jos
7. Selection.MoveDown Unit:=wdLine, Count:=8
8.
9. MsgBox "Am mutat cursorul opt linii mai jos."
10.
11. 'readuce cursorul la semnul de carte
12. Selection.GoTo what:=wdGoToBookmark, Name:="OriginalInsertionPoint"
13.
14. MsgBox "Acum, cursorul a fost readus la poziția anterioara executarii macrocomenzii."
15.
16. 'stergere semn de carte pentru a elimina urmele 
17.
18. ActiveDocument.Bookmarks("OriginalInsertionPoint").Delete
19. End Sub

Se poate observa că pe linia 18 a fost șters semnul de carte după ce nu mai este nevoie de el.

  • Dacă procedura a adăugat un obiect nou în fișier, iar utilizatorul trebuie să lucreze cu el, la finalul procedurii se poate selecta acel obiect.