Si utilitzeu moltes cel·les i intervals amb nom al vostre llibre de treball, potser us sorprendrà descobrir que Excel no ofereix cap manera d'enumerar els detalls de cada nom. Apareix informació útil al quadre de diàleg Gestor de noms, però no hi ha manera de mostrar aquesta informació de manera que es pugui imprimir.
El codi VBA que s'ofereix aquí genera un informe útil que descriu els noms definits en qualsevol llibre de treball.
Exemple d'informe de noms
Aquí veieu un exemple d'informe de noms.
L'informe, que es crea en un full de treball nou, inclou la informació següent per a cada nom:
-
Nom: El nom.
-
RefersTo: la definició del nom. Normalment, serà una cel·la o un interval, però un nom també pot definir una fórmula.
-
Cel·les: el nombre de cel·les contingudes a l'interval anomenat. Per a les fórmules amb nom, aquest camp mostra #N/A.
-
Àmbit: l'abast del nom: Llibre de treball o el nom del full de treball específic en què el nom és vàlid.
-
Ocult: és cert si el nom està amagat. Els noms ocults els creen alguns complements (com ara Solver) i no apareixen al quadre de diàleg Gestor de noms.
-
Error: és cert si el nom conté una referència errònia.
-
Enllaç: un hiperenllaç que, quan es fa clic, activa l'interval anomenat. Només els noms que fan referència a cel·les o intervals inclouen un enllaç.
-
Comentari: el comentari del nom, si n'hi ha.
El codi VBA
Per utilitzar aquest codi, premeu Alt+F11 per activar Visual Basic Editor. A continuació, trieu Insereix → Mòdul per inserir un mòdul VBA nou. Copieu el codi i enganxeu-lo al mòdul nou.
Sub GenerateNameReport()
' Genera un informe per a tots els noms del llibre de treball
' (No inclou els noms de les taules)
Dim n com a nom
Dim Row As Long
Dim CellCount com a variant
' Surt si no hi ha noms
Si ActiveWorkbook.Names.Count = 0, aleshores
MsgBox "El llibre de treball actiu no té noms definits".
Sortir de Sub
Acaba si
' Surt si el llibre de treball està protegit
Si ActiveWorkbook.ProtectStructure Aleshores
MsgBox "No es pot afegir un full nou perquè el llibre de treball està protegit".
Sortir de Sub
Acaba si
' Insereix un nou full per a l'informe
ActiveWorkbook.Fulls de treball.Afegir
ActiveSheet.Move After:=Fulls (ActiveWorkbook.Sheets.Count)
ActiveWindow.DisplayGridlines = Fals
' Afegiu la primera línia del títol
Interval ("A1:H1"). Fusionar
Amb rang ("A1")
.Value = "Informe de nom per a: " & ActiveWorkbook.Name
.Font.Size = 14
.Font.Bold = True
.HorizontalAlignment = xlCenter
Acaba amb
' Afegiu la segona línia del títol
Interval ("A2:H2"). Fusionar
Amb rang ("A2")
.Valor = "Generat" i ara
.HorizontalAlignment = xlCenter
Acaba amb
' Afegiu les capçaleres
Interval ("A4:H4") = Matriu ("Nom", "RefersA", "Cèl·lules", _
"Àmbit", "Ocult", "Error", "Enllaç", "Comentar")
' Recorre els noms
Fila = 4
En cas d'error Reprèn Següent
Per a cada n a ActiveWorkbook.Names
Fila = Fila + 1
'Columna A: Nom
Si n.Nom Com "*!*" Aleshores
Cel·les(Fila, 1) = Dividir(n.Nom, “!”)(1) ' Elimina el nom del full
Altrament
Cel·les(Fila, 1) = n.Nom
Acaba si
'Columna B: es refereix a
Cel·les (Fila, 2) = "'" & n.RefersTo
'Columna C: nombre de cel·les
CellCount = CVERErr(xlErrNA) ' Valor de retorn per a la fórmula anomenada
CellCount = n.RefersToRange.CountLarge
Cel·les (fila, 3) = CellCount
' Columna D: Àmbit
Si n.Nom Com "*!*" Aleshores
Cel·les (Fila, 4) = Dividir (n.Nom, “!”) (0) ' nom del full d'extracció
Cel·les (Fila, 4) = Reemplaça (Cèl·lules (Fila, 4), “'“, ““) 'elimina apòstrofes
Altrament
Cel·les (fila, 4) = "Llibre de treball"
Acaba si
'Columna E: estat ocult
Cel·les (Fila, 5) = No n.Visible
'Columna F: Nom erroni
Cel·les (fila, 6) = n. Es refereix a "*[#]REF!*"
'Columna G: hiperenllaç
Si no és l'aplicació.IsNA(Cèl·lules (fila, 3)) Aleshores
ActiveSheet.Hyperlinks.Add _
Àncora:=Cèl·lules (fila, 7), _
Adreça:=““, _
Subadreça:=n.Nom, _
TextToDisplay:=n.Nom
Acaba si
'Columna H: Comentari
Cel·les (fila, 8) = n.Comentari
Següent n
' Converteix-lo en una taula
ActiveSheet.ListObjects.Add _
SourceType:=xlSrcRange, _
Font:=Range(“A4”).CurrentRegion
' Ajusteu l'amplada de les columnes
Columnes ("A:H").Columna sencera.Ajust automàtic
End Sub
Generació d'un informe
Executeu el procediment GenerateNameReport i l'informe es genera en un full de treball nou al llibre de treball actiu. El codi no ha d'estar al llibre de treball que conté els noms de l'informe.
Si trobeu útil aquest codi, potser voldreu emmagatzemar-lo al vostre llibre de treball de macros personals o crear un complement.