如何让Excel页眉关联单元格值并随单元格内容自动更新?
问题根源
你写的headerofactivesheet是手动执行的普通宏,没有绑定单元格内容变更的触发事件,只有手动运行这段宏的时候才会把A1的内容写入页眉,修改A1时宏不会自动执行,自然无法实现同步更新。
实现自动同步的操作步骤
单工作表同步(仅当前设置的工作表生效)
- 打开目标Excel文件,按
Alt+F11快捷键调出VBA编辑器 - 在左侧工程资源管理器面板中,双击你需要设置页眉的工作表名称,打开该工作表的专属代码编辑窗口
- 将以下代码粘贴到代码窗口中:
Private Sub Worksheet_Change(ByVal Target As Range) ' 仅当修改的单元格包含A1时才触发页眉更新 If Not Intersect(Target, Me.Range("A1")) Is Nothing Then ' 将A1的值写入中部页眉,可按需修改位置和单元格地址 Me.PageSetup.CenterHeader = Me.Range("A1").Value End If End Sub
- 粘贴完成后关闭VBA编辑器即可,之后修改A1单元格内容时,页眉会自动同步更新。
全工作簿同步(所有工作表各自同步自身A1到页眉)
如果需要工作簿内所有工作表都实现这个效果,不需要逐个表加代码,直接绑定工作簿级事件即可:
- 按
Alt+F11调出VBA编辑器,在左侧工程资源管理器中双击ThisWorkbook对象 - 将以下代码粘贴到弹出的代码窗口中:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ' 跳过没有单元格对象的图表表、宏表等特殊页面 If TypeName(Sh) <> "Worksheet" Then Exit Sub If Not Intersect(Target, Sh.Range("A1")) Is Nothing Then Sh.PageSetup.CenterHeader = Sh.Range("A1").Value End If End Sub
自定义调整说明
- 要修改页眉位置:把代码里的
CenterHeader(中部页眉)替换为LeftHeader(左侧页眉)或RightHeader(右侧页眉)即可 - 要绑定其他单元格:把代码里的
"A1"替换为你需要的目标单元格地址即可,比如"D3"、"F10" - 文件保存时必须选择
Excel 启用宏的工作簿(*.xlsm)格式,否则宏代码会被清除,下次打开自动同步功能会失效。
内容的提问来源于stack exchange,提问作者Intel Power
相关产品推荐
相关产品推荐

