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:4200
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:554
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

milie
Mesaje:10
Membru din:Sâm Iul 26, 2025 9:53 am

Re: Cum aflu numele foii precedente?

Mesaj de milie » Vin Aug 22, 2025 7:57 am

Bună! Poți folosi VBA pentru a obține numele foii precedente. De exemplu, dacă foaia activă este „Foaia3”, poți folosi acest cod:

```vba
Sub NumeFoaiePrecedenta()
Dim idx As Integer
idx = ActiveSheet.Index
If idx > 1 Then
MsgBox Sheets(idx - 1).Name
Else
MsgBox ""Nu există o foaie precedentă.""
End If
End Sub
```

TudyBTH
Moderator
Moderator
Mesaje:1003
Membru din:Joi Feb 11, 2016 2:12 pm
Localitate:Cluj Napoca

Re: Cum aflu numele foii precedente?

Mesaj de TudyBTH » Vin Aug 22, 2025 9:28 am

Buna,
Numele foii precedente (dupa index), ca orice alta problema, poate avea mai multe solutii.
De exemplu, poate fi obtinut printr-o UDF (User Defined Function) pe care o introduci intr-o celula, asa cum au aratat colegii mai sus:

Cod: Selectaţi tot

Function GetPrecedentSheetName() As String
    Dim wsC As Worksheet
    
    Application.Volatile
    Set wsC = Application.Caller.Parent
    If Application.Caller.Parent.Index > 1 Then
        GetPrecedentSheetName = Worksheets(wsC.Index - 1).Name
    Else
        GetPrecedentSheetName = Worksheets(wsC.Index).Name
    End If
End Function
Poate fi obtinut cu ajutorul unei Power Query si cu o formula de genul:

Cod: Selectaţi tot

=INDEX(Book1_xlsm[Name];MATCH(MID(CELL("filename");FIND("]";CELL("filename"))+1;LEN(CELL("filename")));Book1_xlsm[Name];0)-1)
Orice sulutie insa are un domeniu propriu de aplicabilitate, adica propriile limite. Pentru a folosi o UDF trebuie sa transformi fisierul in .xlsm. Pentru o solutie cu Power Query trebuie sa te asiguri ca exista un Refresh al acesteia dupa orice modificare in denumirile sau ordinea foilor.
PE SCURT:
Pentru a obtine o solutie care sa poata fi aplicata in fisierul tau este neaparat necesar sa faci o descriere cat mai amanuntita a intregului fisier.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Scrie răspuns

Înapoi la “Tips and Tricks Excel”