Cum aflu numele foii precedente?
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.
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.
Re: Cum aflu numele foii precedente?
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
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
Re: Cum aflu numele foii precedente?
Eu doar în VBA știu să obțin numele foii/paginii din stângaCum pot afla numele foii precedente (din stânga) dacă toate foile au fost redenumite și nu mai au numele lor originale Sheet1, Sheet2, ...
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
Cod: Selectaţi tot
Application.VolatileRe: Cum aflu numele foii precedente?
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
```
```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
```
Re: Cum aflu numele foii precedente?
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:
Poate fi obtinut cu ajutorul unei Power Query si cu o formula de genul:
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.
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 FunctionCod: Selectaţi tot
=INDEX(Book1_xlsm[Name];MATCH(MID(CELL("filename");FIND("]";CELL("filename"))+1;LEN(CELL("filename")));Book1_xlsm[Name];0)-1)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.
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.
