工作表太多?给每张表加一个"下拉即跳转"菜单,选中表名直接切过去




Lv.3 优质创作者
回复贴:
https://bbs.wps.cn/topic/98401?chan=share&fromshare=copylink&shareType=copylink
一、先看效果
工作簿里工作表一多,来回切表全靠点底部标签,找半天。试试这个:在任意工作表点一下 A1 的下拉箭头,选中表名,自动跳转,全程只点一次。
二、原理其实就两句话
数据验证下拉 —— 把工作表名列表做成一个下拉菜单,负责"选";
工作表 Change 事件宏 —— 检测到 A1 的值一变,就激活对应名字的工作表,负责"跳"。
下拉负责选,宏负责跳,两者配合,就是"选中即跳转"。
三、三步实现(每步都有图)
第 1 步:建一个"目录"表,集中管理表名
新建一张工作表命名为「目录」,把工作簿里所有工作表的名字从 A2 开始依次填好:
第 2 步:每张表放一个下拉菜单(约 10 秒/张)
对每一张工作表(目录表除外):
选中左上角 A1 单元格(也可以换成任意固定的空白单元格);
菜单栏【数据】→【有效性】→ 允许选「序列」;
来源填这一串(重点):就是你目录中的所有的工作表的名称。
确定后,A1 右侧就会出现下拉箭头,点开就是全部表名。
第 3 步:粘贴宏代码(关键一步)
按 Alt+F11 打开宏编辑器,左侧工程树里双击每一张工作表,把下面代码粘贴进去(每张表粘贴一次,代码相同):
▶ Excel 用 VBA 代码
vba
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A1" Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
Worksheets(Target.Value).Activate ' 选中表名 → 直接跳转
On Error GoTo 0
Target.ClearContents ' 跳转后清空,下次进来下拉是空的
Application.EnableEvents = True
End Sub▶ WPS 表格用 JS 宏代码(无需安装 VBA 插件)
javascript
// WPS 表格:双击左侧对应工作表节点后粘贴
function Worksheet_Change(area) {
if (area.Address(false, false) !== "A1") return;
var name = area.Value2;
if (!name) return;
try {
Worksheets(name).Activate();
area.ClearContents(); // 跳转后清空,下次进来下拉是空的
} catch (e) {}
}四、几个小贴士
Excel 用户保存时选择「启用宏的工作簿 (.xlsm)」,WPS 表格默认支持宏,直接保存即可;
跳转后 A1 会自动清空,不会残留上次的选择,下次点开下拉是干净的;
表名尽量用简短无重复的名字,避免误跳;
如果工作表特别多、不想逐张粘贴代码,可以回复问我要「类模块」写法 —— 代码只写一次,全部工作表统一生效。
其实还有一种最简单的方法,就是直接用灵犀,告诉你的需求,灵犀就可以全程搞定,不用自己动手定制,但是如果担心文件信息,那就用我的方法直接手搓一个,大概也就几分钟的时间。
五、适用场景
分班成绩表、课程表、跨部门汇总表、多表台账……凡是"一个工作簿几十张表"的文件都适用。欢迎试过的小伙伴回来交流心得,有更妙的做法也可以在下面分享!
Lv.3 优质创作者
Lv.3 优质创作者
Lv.3 优质创作者
Lv.3 优质创作者
Lv.3 优质创作者
Lv.2 潜力创作者
Lv.3 优质创作者