Cum aflu numele foii precedente?

trucuri, sfaturi si alte idei pentru imbunatatirea lucrului cu Excel
Ofi TM
Mesaje: 1
Membru din: Lun Feb 13, 2023 12:14 pm

Cum aflu numele foii precedente?

Mesaj de Ofi TM » Lun Feb 13, 2023 12:39 pm

Bună ziua;
Cum pot afla numele foii precedente (din stânga) dacă toate foile au fost redenumite și nu mai au numele lor originale Sheet1, Sheet2, ...
Mulțumesc.

IPP
Moderator
Moderator
Mesaje: 4196
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Cum aflu numele foii precedente?

Mesaj de IPP » Lun Feb 13, 2023 5:01 pm

Buna ziua

Din cate stiu, odata redenumite, numele vechi ale foilor, asa cum le vede utilizatorul se pierd definitiv.

In teorie, daca vechile denumiri au fost doar Sheet1, 2, 3... acestea ar trebui sa fi ramas neschimbate daca va uitati in editorul macro (incercati scurtatura Alt+F11 pentru afisarea acestuia) si eventual le puteti modifica din nou in interfata in consecinta. De ex. poate aveti o foaie numita acum Facturi iar in editorul macro se va vedea Sheet2 in dreptul ei

IP

cip.st
Moderator
Moderator
Mesaje: 550
Membru din: Vin Iun 06, 2014 1:43 pm
Localitate: Iași

Re: Cum aflu numele foii precedente?

Mesaj de cip.st » Lun Feb 13, 2023 5:37 pm

Cum pot afla numele foii precedente (din stânga) dacă toate foile au fost redenumite și nu mai au numele lor originale Sheet1, Sheet2, ...
Eu doar în VBA știu să obțin numele foii/paginii din stânga

O foaie de calcul poate fi accesată prin:
- Numele de cod - e aproape fix, îl găsești în VBA
- Numele afișat în bara de foi - poate fi modificat de oricine dacă nu există protecție
- Index - reprezintă numărul de ordine în bara de foi. Se modifică ori de câte ori sunt rearanjate foile.

Pornind de la acesta, poți utiliza obiectul Workseet: cu proprietatea Index determini indexul paginii curente, iar dacă Index este mai mare decât 1, atunci cu proprietatea Name(index-1) afli numele foii din stânga foii curente.

Dacă ai nevoie de nume într-o formulă curentă, poți utiliza o funcție bazată pe același principiu, ca în exemplul de mai jos:

Cod: Selectaţi tot

Function NumeFoaieStanga(LinkCell As Range) As Variant
Dim Index As Long

Index = LinkCell.Parent.Index
If Index > 1 Then
    NumeFoaieStanga = ThisWorkbook.Worksheets(Index - 1).Name
Else
    NumeFoaieStanga = CVErr(xlErrNA)
End If

End Function
PS. Dacă vrei ca funcția să fie volatilă (deși acest lucru va îngreuna calculul) adaugă în corpul funcției linia:

Cod: Selectaţi tot

Application.Volatile

Scrie răspuns

Înapoi la “Tips and Tricks Excel”