动态工作表选项卡名称(Microsoft Excel)
您可能已经知道,可以通过双击工作表选项卡的名称并提供新名称来更改其名称。但是,如果要动态执行该怎么办?如果要让单元格A1中的值自动显示为选项卡名称怎么办?
不幸的是,Excel没有提供内部函数来处理此类任务。使用将为您完成工作的宏开发此类功能是一项相对简单的任务。例如,以下宏会将选项卡名称更改为A1的内容:
Sub myTabName() ActiveSheet.Name = ActiveSheet.Range("A1") End Sub
关于此宏,有几个重要的注意事项。首先,没有错误检查。这意味着,如果A1包含对于制表符名称而言是非法的值,则宏会生成错误。
其次,该宏必须手动运行。
如果您想要一个更强大的宏来检查错误并自动运行该怎么办?结果会更长一点,但仍然不会太复杂:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Set Target = Range("A1") If Target = "" Then Exit Sub On Error GoTo Badname ActiveSheet.Name = Left(Target, 31) Exit Sub Badname: MsgBox "Please revise the entry in A1." & Chr(13) _ & "It appears to contain one or more " & Chr(13) _ & "illegal characters." & Chr(13) Range("A1").Activate End Sub
要设置此宏,请按照下列步骤操作:
。打开一个只有一个工作表的新工作簿。
。右键单击工作表选项卡,然后从出现的“上下文”菜单中选择“查看代码”。 Excel将显示VBA编辑器。
。将上面的宏粘贴(或键入)到代码窗口中。
。关闭VBA编辑器。
。在系统上找到XLStart文件夹。 (使用Windows搜索功能找到该文件夹。)
。使用XLStart目录中的名称Book.xltm将工作簿另存为启用Excel宏的模板。这会使模板成为您创建的任何新工作簿的模式。
。再次将工作簿另存为同一目录中启用宏的模板,这一次使用名称Sheet.xltm。这使模板成为您插入工作簿中任何新工作表的模式。
。关闭并重新启动Excel。
现在,只要您更改单元格A1中的值,工作表选项卡也会更新。
使用此技巧有一个警告:如果单元格A1中的值是一个日期,并且您希望工作表选项卡包含该日期,那么您可能无法获得期望的结果。原因很简单:Excel在内部将日期存储为序列号,这是分配给工作表选项卡的内容,而不是格式化的日期。如果要处理日期,则需要更改为选项卡名称实际分配的内容:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Set Target = Range("A1") If Target = "" Then Exit Sub On Error GoTo Badname ActiveSheet.Name = Format(Target, "mmm-dd-yy") Exit Sub Badname: MsgBox "Please revise the entry in A1." & Chr(13) _ & "It appears to contain one or more " & Chr(13) _ & "illegal characters." & Chr(13) Range("A1").Activate End Sub
请注意,这里唯一的更改是分配给工作表的Name属性的内容-它是格式化日期。如果愿意,可以修改宏中使用的日期格式。但是,您不应选择使用斜杠的格式,因为这些斜杠在工作表名称中是非法的。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(7993)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较早菜单界面找到此技巧的版本:
链接:/ excel-Dynamic_Worksheet_Tab_Names [动态工作表标签名称]。