Sommario:
Video: Office 365 - Excel - Tutorial 62 - Creare Macro in VBA e pulsante 2024
Se nella cartella di lavoro si utilizzano molte celle e intervalli denominati, è possibile che si sorprenda scoprire che Excel non consente di elencare i dettagli per ciascun nome. Le informazioni utili vengono visualizzate nella finestra di dialogo Gestione nomi, ma non c'è modo di visualizzare queste informazioni in un modo che può essere stampato.
Il codice VBA qui offerto genera un rapporto utile che descrive i nomi definiti in qualsiasi cartella di lavoro.
Esempio Name Report
Qui, si vede un esempio di un Name Report.
Il report, che viene creato su un nuovo foglio di lavoro, include le seguenti informazioni per ciascun nome:
-
Nome: Il nome.
-
Riferito a: La definizione del nome. Di solito, questa sarà una cella o un intervallo, ma un nome può anche definire una formula.
-
Celle: Il numero di celle contenute nell'intervallo denominato. Per le formule denominate, questo campo visualizza # N / D.
-
Ambito: L'ambito del nome: la cartella di lavoro o il nome del foglio di lavoro specifico su cui il nome è valido.
-
Nascosto: Vero se il nome è nascosto. I nomi nascosti vengono creati da alcuni componenti aggiuntivi (come il Risolutore) e non appaiono nella finestra di dialogo Gestione nomi.
-
Errore: Vero se il nome contiene un riferimento errato.
-
Link: Un collegamento ipertestuale che, quando si fa clic, attiva l'intervallo denominato. Solo i nomi che fanno riferimento a celle o intervalli includono un collegamento.
-
Commento: Il commento per il nome, se presente.
Il codice VBA
Per utilizzare questo codice, premere Alt + F11 per attivare Visual Basic Editor. Quindi selezionare Inserisci → Modulo per inserire un nuovo modulo VBA. Copia il codice e incollalo nel nuovo modulo.
Sub GenerateNameReport () 'Genera un report per tutti i nomi nella cartella di lavoro' (Non include nomi tabella) Dim n Come nome Dim Row As Long Dim CellCount As Variant 'Esci se non ci sono nomi Se ActiveWorkbook. Nomi. Count = 0 Then MsgBox "La cartella di lavoro attiva non ha nomi definiti. "Exit Sub End If" Esci se la cartella di lavoro è protetta Se ActiveWorkbook. ProtectStructure Then MsgBox "Non è possibile aggiungere un nuovo foglio perché la cartella di lavoro è protetta. "Exit Sub End If" Inserisci un nuovo foglio per il report ActiveWorkbook. Fogli di lavoro. Aggiungi ActiveSheet. Sposta dopo: = Fogli (ActiveWorkbook. Fogli. Conta) ActiveWindow. DisplayGridlines = False 'Aggiungi prima riga del titolo Intervallo ("A1: H1"). Unisci con intervallo ("A1"). Valore = "Nome Segnala per:" e ActiveWorkbook. Nome. Font. Dimensione = 14. Font. Grassetto = Vero. HorizontalAlignment = xlCenter End Con 'Aggiungi una seconda riga del titolo Range ("A2: H2"). Unisci con intervallo ("A2"). Valore = "Generato" e ora. HorizontalAlignment = xlCenter End Con 'Add the header range ("A4: H4") = Array ("Nome", "RefersTo", "Celle", _ "Ambito", "Nascosto", "Errore", "Link", " Commento ")" Passa attraverso i nomi Row = 4 On Error Riprendi Next For Each n In ActiveWorkbook.Names Row = Row + 1 'Column A: Name If n. Nome come "*! * "Then Cells (Row, 1) = Split (n. Name,"! ") (1) 'Remove sheet name Else Cells (Row, 1) = n. Nome Fine Se "Colonna B: RefersTo Cells (Row, 2) =" '"& n. RefersTo 'Column C: Number of cells CellCount = CVErr (xlErrNA)' Valore restituito per la formula denominata CellCount = n. RefersToRange. CountLarge Cells (Row, 3) = CellCount 'Column D: Scope If n. Nome come "*! * "Then Cells (Row, 4) = Split (n. Nome,"! ") (0) 'nome del foglio di estrazione Celle (Riga, 4) = Sostituisci (Celle (Riga, 4),"' "," ") 'remove apostrophes Else Cells (Row, 4) = "Cartella di lavoro" End If "Colonna E: stato nascosto Celle (Riga, 5) = Non n. 'Colonna F visibile: Nome errore Celle (Riga, 6) = n. Riferisce come "* [#] REF! * "'Colonna G: collegamento ipertestuale se non applicazione. IsNA (celle (riga, 3)) quindi ActiveSheet. Collegamenti ipertestuali. Aggiungi _ Ancora: = Celle (Riga, 7), _ Indirizzo: = "", _ Sottoindirizzo: = n. Nome, _ TextToDisplay: = n. Nome End If 'Column H: Comment Cells (Row, 8) = n. Commenta Avanti 'Converti in una tabella ActiveSheet. ListObjects. Aggiungi _ SourceType: = xlSrcRange, _ Source: = Range ("A4"). CurrentRegion 'Regola le colonne delle colonne delle colonne ("A: H"). Colonna intera. AutoFit End Sub
Generazione di un report
Eseguire la procedura GenerateNameReport e il report viene generato in un nuovo foglio di lavoro nella cartella di lavoro attiva. Il codice non deve essere nella cartella di lavoro che contiene i nomi per il report.
Se ritieni che questo codice sia utile, puoi memorizzarlo nella tua cartella di lavoro macro personale o creare un componente aggiuntivo.