Lucrul cu obiecte Windows

Colecția Windows conține un obiect Window pentru fiecare fereastră deschisă din aplicația Excel. În mod normal, când deschideți un registru de lucru, Excel deschide o fereastră astfel încât să o puteți vedea. De asemenea, dacă este necesar, aveți posibilitatea să deschideți alte ferestre, de exemplu, făcând clic pe fila Vizualizare (View) de pe panglică, apoi făcând clic pe butonul Fereastră nouă (New Window) din zona Window.

În majoritatea cazurilor, utilizarea obiectelor Window nu este o modalitate foarte utilă de a accesa datele prin VBA, deoarece îl puteți accesa mai ușor utilizând obiecte precum obiectul ActiveSheet sau obiectul ActiveCell. Cu toate acestea, poate doriți să deschideți, să închideți, să activați sau să aranjați ferestrele prin programare (printr-o macrocomandă, în loc ca utilizatorul să o facă manual interactiv) pentru a afișa datele utilizatorului într-un mod special.

Deschiderea unei ferestre noi într-un registru de lucru

Pentru a deschide o fereastră nouă într-un registru de lucru, utilizați metoda NewWindow a obiectului Window corespunzător. Această metodă nu are argumente. De exemplu, următoarea instrucțiune deschide o fereastră nouă care afișează conținutul primei ferestre deschise în registrul de lucru identificat de variabila obiect myWorkbook:

myWorkbook.Windows(1).NewWindow

Închiderea unei ferestre

Pentru a închide o fereastră, utilizați metoda Close cu obiectul Window corespunzător. Sintaxa este următoarea:

expression.Close(SaveChanges, Filename, RouteWorkbook)

Aici, expression este o expresie necesară care returnează un obiect Window. Această sintaxă este aceeași ca pentru închiderea unui registru de lucru (a se vedea "Închiderea unui registru de lucru" din Gestionarea registrelor de lucru).

Diferența este că, dacă două sau mai multe ferestre sunt deschise în același registru de lucru, închiderea celei de-a doua sau a ferestrelor ulterioare nu închide registrul de lucru, astfel încât argumentele nu sunt relevante. (Dacă fereastra pe care o închideți este ultima fereastră a registrului de lucru, totuși, trebuie să specificați ferestrele - în caz contrar, Excel solicită utilizatorului să salveze orice modificări nesalvate.)

De exemplu, următoarea instrucțiune închide toate ferestrele deschise în registrul de lucru la care se face referire la variabila obiect myWorkbook, cu excepția unei ferestre:

Do While myWorkbook.Windows.Count > 1
myWorkbook.Windows(myWorkbook.Windows.Count).Close
Loop

Activarea unei ferestre

Activarea în VBA înseamnă a focaliza o anumită fereastră. Într-o aplicație, o singură fereastră poate accepta interacțiunea utilizatorului. Se spune că este focalizată. Pentru a activa o fereastră, utilizați metoda Activate a obiectului Window corespunzător. De exemplu, următoarea instrucțiune activează prima fereastră deschisă în registrul de lucru Planning.xlsx:

Workbooks("Planning.xlsx").Windows(1).Activate

În mod similar, aveți posibilitatea să activați fereastra anterioară utilizând metoda ActivatePrevious sau fereastra următoare utilizând metoda ActivateNext.

Aranjarea și redimensionarea ferestrelor

Pentru a aranja ferestrele, utilizați metoda Arrange cu colecția Windows corespunzătoare. Sintaxa este următoarea:

expression.Arrange(ArrangeStyle, ActiveWorkbook, SyncHorizontal, SyncVertical)

Iată componentele sintaxei:

  • expression este o expresie necesară care returnează o colecție Windows.
  • ArrangeStyle este un argument opțional pe care îl puteți seta la xlArrangeStyleTiled pentru a stivui ferestrele (setarea implicită), xlArrangeStyleHorizontal pentru a aranja ferestrele pe orizontală, xlArrangeStyleVertical pentru a aranja ferestrele pe verticală sau xlArrangeStyleCascade pentru a așeza ferestrele în cascadă, într-un aranjament care ferestrele sunt suprapuse și vă permite să vedeți bara de titlu a fiecărei ferestre și conținutul ferestrei din față.
  • ActiveWorkbook este un argument opțional de tip Variant pe care îl puteți seta la True pentru a face ca VBA să aranjeze numai ferestrele din registrul de lucru activ. Valoarea implicită este False, care aranjează toate ferestrele deschise.
  • SyncHorizontal și SyncVertical sunt argumente opționale de tip Variant pe care le puteți seta la True când utilizați ActiveWorkbook:=True pentru ca ferestrele registrului de lucru activ să deruleze orizontal sau vertical în sincronizare (când derulați o fereastră, celelalte ferestre sunt derulate pe aceeași distanță, în aceeași direcție). Valoarea implicită este False.

De exemplu, următoarea instrucțiune aranjează ferestrele din registrul de lucru Budget.xlsx vertical și setează defilarea sincronizată a lor:

Workbooks("Budget.xlsx").Windows.Arrange _
ArrangeStyle:=xlArrangeStyleVertical, _
ActiveWorkbook:=True, SyncVertical:=True

Aveți posibilitatea să maximizați, să minimizați sau să restaurați fereastra aplicației setând proprietatea WindowState a obiectului Aplicație la xlMaximized, xlMinimized sau xlNormal. În mod similar, în fereastra aplicației, aveți posibilitatea să maximizați, să minimizați sau să restabiliți un document setându-i proprietatea WindowState.

Când o fereastră se află într-o stare "normală" (xlNormal; nemaximizată sau minimizată), o puteți poziționa utilizând proprietățile Top și Left pentru a specifica poziția colțului din stânga sus al ferestrei și a o dimensiona prin setarea proprietăților Height și Width. Verificați proprietatea UsableWidth și proprietatea UsableHeight a obiectului aplicație pentru a calcula cantitatea de spațiu disponibil în fereastra aplicație. (În mod similar, aveți posibilitatea să verificați proprietatea UsableWidth și usableHeight a obiectului Window pentru a vedea cât spațiu este disponibil în fereastră - de exemplu, pentru a dimensiona sau poziționa corect un obiect.)

Următorul exemplu declară două variabile obiect Window, myWindow1 și myWindow2 și asociază myWindow1 ferestrei active și myWindow2 unei ferestre noi care afișează aceeași foaie de lucru ca și myWindow1. Apoi se dimensionează și poziționează cele două ferestre, astfel încât fiecare va avea înălțimea completă disponibilă în fereastra aplicației, cu myWindowl luând un sfert din lățimea disponibilă și myWindow2 luând restul de trei sferturi din lățimea disponibilă:

Dim myWindow1 As Window, myWindow2 As Window 
Set myWindow1 = ActiveWindow 
Set myWindow2 = myWindowl.NewWindow 
With myWindow1
  .WindowState = xlNormal 
  .Top = 0
  .Left = 0
  .Height = Application.UsableHeight
  .Width = Application.UsableWidth * 0.25 
End With 
With myWindow2
  .WindowState = xlNormal
  .Top = 0
  .Left = (Application.UsableWidth * 0.25) + 1
  .Height = Application.UsableHeight
  .Width = Application.UsableWidth * 0.75 
End With

Mărirea unei ferestre și setarea opțiunilor de afișare

Pentru a modifica zoom-ul (mărimea conținutului ferestrei), setați proprietatea Zoom a obiectului fereastră corespunzător. Zoom-ul în acest context înseamnă doar schimbarea dimensiunii ferestrei de pe ecran – nu implică neapărat extinderea ei, doar schimbarea ei.

De exemplu, următoarea instrucțiune mărește fereastra activă la 150 la sută:

ActiveWindow.Zoom = 150

În unele proceduri, poate fi necesar să modificați afișarea ferestrei Excel pentru a vă asigura că anumite caracteristici sunt (sau nu) disponibile pentru utilizator. Utilizați proprietățile booleene DisplayScrollBars, DisplayStatusBar și DisplayFormulaBar pentru a controla dacă Excel afișează barele de defilare, bara de stare și bara de formule. Utilizați proprietatea DisplayFullScreen pentru a activa și dezactiva vizualizarea pe ecran complet.

De exemplu, următoarele declarații verifică dacă barele de defilare și bara de stare sunt ascunse și dacă este afișată bara de formule:

With Application
  .DisplayScrollBars = False 
  .DisplayStatusBar = False 
  .DisplayFormulaBar = True 
End With