Îmi plac unele trăsături pe care le-am întâlnit în anumite aplicaţii unde, de exemplu, lăţimea unei coloane/înălţimea unui rând se poate ajusta automat în funcţie de cel mai mare conţinut al unei celule sau să fie evidenţiat rândul/coloana pe care se află cursorul. M-am bucurat să realizez că, prin folosirea unor mici artificii, se poate face asta şi în Excel.
Redimensionarea automată pentru rânduri/coloane

În primă fază este necesară accesarea VBA care se poate realiza, fie prin apăsarea combinaţiei de taste Alt+F11 sau click dreapta pe tab-ul foii de calcul şi alegerea opţiunii View Code
(Fig. 1).
Vom alege Worksheet, din lista de obiecte (Fig. 2), care va asigura, de altfel, premisele rutinei de creat. Astfel că, ce rămâne de făcut, este să inserăm codul: Cells.EntireColumn.AutoFit
. Vom remarca, la scrierea într-o celulă că, dacă vom avea conţinut mai mult decât lăţimea iniţială, după ce vom da Enter se va realiza auto-dimensionarea.
Aşadar, forma finală pentru auto-ajustarea lăţimii coloanei va avea următorul conţinut:
1 2 3 |
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.EntireColumn.AutoFit End Sub |

Cells.EntireRow.AutoFit
. Desigur, prin faptul că alegem lăţirea coloanei în funcţie de conţinut, putem realiza că ajustarea înălţimii rândului îşi pierde din importanţă.
Evidenţiere rând / coloană curentă
Apelând la aceeaşi „traiectorie” VBA pentru a realiza acest deziderat, vom avea nevoie, în prealabil, de o mică pregătire condiţionabilă. Astfel, dacă dorim să evidenţiem rândul pe care ne aflăm, vom selecta, în prealabil toată foaia de calcul (dacă se doreşte ca efectul să fie propagat în orice celulă accesată din foaia respectivă).
Vom accesa Conditional Formatting
şi creăm o nouă regulă: =ROW()=CELL("row")
, desigur, cu formatarea dorită (Fig. 3).

=COLUMN()=CELL("col")
.Apoi, la fel ca în paşii de la capitolul anterior, ajungem în VBA, la crearea unei scurte subrutine, folosind o singură acţiune (Application.ScreenUpdating = True
), după cum urmează:
1 2 3 |
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = True End Sub |