Erstellen Sie einen Namen Bericht mit VBA-Code

Wenn Sie viele benannten Zellen und Bereiche in Ihrer Arbeitsmappe verwenden, können Sie überrascht sein, zu entdecken, dass Excel keine Möglichkeit bietet die Details für jeden Namen aufzulisten. Nützliche Informationen werden im Name Manager Dialogfeld, aber es gibt keine Möglichkeit, diese Informationen in einer Art und Weise anzuzeigen, die gedruckt werden kann.

Der VBA-Code angeboten hier erzeugt einen nützlichen Bericht, der die Namen in einer Arbeitsmappe definiert beschreibt.

Beispiel Name Bericht

Hier sehen Sie ein Beispiel für einen Namensbericht.

bild0.jpg

Der Bericht, der auf einem neuen Arbeitsblatt erstellt wird, enthält die folgenden Informationen für jeden Namen:

  • Name: Der Name.

  • Bezieht sich auf: Die Definition für den Namen. Normalerweise wird dies eine Zelle oder einen Bereich, sondern ein Name kann auch Formel definieren.

  • Zellen: Die Anzahl der Zellen in dem genannten Bereich enthalten. Für benannte Formeln, zeigt dieses Feld # N / A.

  • Umfang: Der Umfang des Namens - entweder Arbeitsmappe oder der Name des bestimmten Arbeitsblatt, auf dem der Name gültig ist.

  • Versteckt: Wahr, wenn der Name ist versteckt. Versteckte Namen werden von einigen Add-Ins (zB Solver) erstellt, und erscheinen nicht im Namen im Dialogfeld Manager.

  • Fehler: Wahr, wenn der Name eine fehlerhafte Referenz enthält.

  • Link: Ein Hyperlink, der, wenn darauf geklickt wird, den benannten Bereich aktiviert. Nur Namen, die Zellen oder Bereiche beziehen sich einen Link.

  • Kommentar: Der Kommentar für den Namen, falls vorhanden.

Der VBA-Code

Um diesen Code verwenden, drücken Sie Alt + F11, um Visual Basic-Editor zu aktivieren. Dann wählen Sie Einfügen - Modul, um ein neues VBA-Modul einzufügen. Kopieren Sie den Code und fügen Sie ihn in das neue Modul.

Sub GenerateNameReport () 'Erstellt einen Bericht für alle Namen in der Arbeitsmappe "(schließt nicht Tabellennamen) Dim n Als NameDim Row Als LongDim ZellenZaehler As Variant' Exit, wenn kein namesIf ActiveWorkbook.Names.Count = 0 ThenMsgBox # 147-Die aktive Arbeitsmappe hat keine definierte Namen. # 148-Ausfahrt SubEnd Wenn 'Exit wenn Arbeitsmappe protectedIf ActiveWorkbook.ProtectStructure ThenMsgBox ist # 147-Ein neues Blatt kann nicht hinzugefügt werden, da die Arbeitsmappe geschützt ist # 148-Ausfahrt SubEnd Wenn "ein neues Blatt für die reportActiveWorkbook.Worksheets.AddActiveSheet.Move Dahinter einfügen:. = Sheets (ActiveWorkbook.Sheets.Count) ActiveWindow.DisplayGridlines = false 'In erste Linie der titleRange (# 147-A1: H1 # 148 -).. MergeWith Range (# 147-A1 # 148 -) Wert = # 147-Namen-Bericht für: # 147- ActiveWorkbook.Name.Font.Size = 14.Font.Bold = True.HorizontalAlignment = xlCenterEnd Mit 'Add zweiten Zeile titleRange (# 147-A2: H2 # 148 -). MergeWith Range (# 147-A2 # 148-). Wert = # 147 Generierte # 147- Now.HorizontalAlignment = xlCenterEnd Mit "Fügen Sie die headersRange (# 147-A4: H4 # 148-) = Array (# 147-Name # 148-, # 147-RefersTo # 148-, # 147-Cells # 148-, _ # 147-Scope # 148-, # 147-Versteckt # 148-, # 147-Error # 148-, # 147-Link # 148-, # 147-Kommentar # 148-) 'Loop durch die namesRow = 4auf Error Resume NextFor jedes n In ActiveWorkbook.NamesRow = Row + 1'Column A: nameif n.Name Wie # 147 - * * # 148- ThenCells (Row, 1) = Split (n.Name, ! # 147 - # 148 -) (1) 'Blatt nameElseCells entfernen (Row, 1) = n.NameEnd If'Column B: RefersToCells (Row, 2) = # 147 - '# 147- n.RefersTo'Column C: Anzahl der cellsCellCount = CVErr (xlErrNA) 'Rückgabewert für den Namen formulaCellCount = n.RefersToRange.CountLargeCells (Row, 3) = ZellenZaehler' Spalte D: ScopeIf n.Name Wie # 147 - * * # 148- ThenCells (Row, 4) = Split (n.Name, # 147 - # 148 -) (0) 'Extrakt Blatt nameCells (Row, 4) = Ersetzen (Cells (Row, 4), # 147 - '# 147-, # 147- # 147-) 'entfernen apostrophesElseCells (Row, 4) = # 147-Arbeitsmappe # 148-End If'Column E: Hidden statusCells (Row, 5) = Nicht n.Visible'Column F: Erroroneous nameCells (Row, 6) = n.RefersTo Wie # 147 - * [#] REF * # 148-G'Column: HyperlinkIf Nicht Application.IsNA (Cells (Row, 3)) ThenActiveSheet.Hyperlinks.Add _Anchor: = Cells (Row, 7), _address: = # 147 - # 147-, _SubAddress: = n.Name, _TextToDisplay: = n.NameEnd If'Column H: CommentCells (Row, 8) = n.CommentNext n 'wandelt es in ein tableActiveSheet.ListObjects.Add _SourceType: = xlSrcRange, _Source : = Range (# 147-A4 # 148 -) Current 'Stellen Sie die Spalte widthsColumns (# 147-A: H # 148 -).. EntireColumn.AutoFitEnd Sub

Erstellen eines Berichts

Führen Sie die GenerateNameReport Verfahren, und der Bericht wird in einem neuen Arbeitsblatt in der aktiven Arbeitsmappe erzeugt. Der Code muss nicht in der Arbeitsmappe, die die Namen für den Bericht enthält.

Wenn Sie diesen Code nützlich finden, können Sie es in Ihrem persönlichen Makro-Arbeitsmappe zu speichern, oder ein Add-In erstellen.

Menü