Nome e cognome in un’intestazione di pagina (Microsoft Excel)
David sta amministrando un’elezione per una società professionale e l’elenco degli elettori idonei è un foglio di lavoro. Ci sono circa 1.200 elettori idonei, quindi la stampa è lunga più di venti pagine. David ha un piè di pagina con il numero di pagina, il che è utile, ma sarebbe fantastico se potesse avere, nell’intestazione di ogni pagina, il nome sulla pagina e il cognome sulla pagina.
In Excel non esiste un modo nativo per farlo. Tuttavia, è uno scatto relativo da fare in Word, quindi una soluzione è incollare i nomi ordinati in un documento di Word e quindi aggiungere l’intestazione desiderata che mostra i nomi.
Anche se questo può funzionare, diventa un problema assicurarsi che la versione di Word dell’elenco sia sempre sincronizzata con la versione di Excel dell’elenco e viceversa.
Se decidi di mantenere un’unica versione dell’elenco dei votanti in Excel, il modo migliore per affrontare il problema è utilizzare una macro per inserire il nome e il cognome nell’intestazione. Il codice di una tale macro, ovviamente, dovrebbe essere adattato al layout dei dati nel foglio di lavoro. La macro seguente presuppone che i nomi siano nelle colonne dalla A alla C, con i cognomi (quelli che si desidera utilizzare per le intestazioni) nella colonna C.
Sub PrintNamesInHeader() Dim iPages As Integer Dim iPage As Integer Dim iHorPgs As Integer Dim iHP As Integer Dim iHPNext As Integer Dim iCol As Integer Dim iColLast As Integer Dim lRow As Long Dim lRowLast As Long Dim sPrtArea As String iCol = 1 'Col A iColLast = 3 'Col C With ActiveSheet iPages = ExecuteExcel4Macro("Get.Document(50)") iHorPgs = .HPageBreaks.Count + 1 sPrtArea = .PageSetup.PrintArea For iPage = 1 To iPages iHP = ((iPage - 1) Mod iHorPgs) iHPNext = iHP + 1 If iHP = 0 Then If sPrtArea = "" Then lRow = 1 Else lRow = .Range(sPrtArea).Cells(1).Row End If Else lRow = .HPageBreaks(iHP).Location.Row End If If iHPNext > .HPageBreaks.Count Then lRowLast = .Cells(lRow, iColLast).End(xlDown).Row Else lRowLast = .HPageBreaks(iHPNext).Location.Row - 1 End If .PageSetup.LeftHeader = .Cells(lRow, iCol).Value & _ " - " & .Cells(lRowLast, iColLast) .PrintOut From:=iPage, To:=iPage, preview:=True Next End With End Sub
Quando si esegue la macro, passa attraverso ogni pagina del foglio di lavoro. Le intestazioni vengono impostate per la pagina, quindi viene stampata la singola pagina e quindi viene esaminata ed elaborata la pagina successiva.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (9542) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: