第2种,目录存在所有工作表里。单击目录,可以方便的在各个工作表中切换。缺点:◎
今天要分享给大家的是做可以双向跳转、全自动更新的目录索引:◎单击目录,跳转到工作表,双击工作表单元格,跳转到目录◎增加、删除了工作表后,目录自动更新,不用手动填充公式◎不但能快速实现工作表之间的切换,目录也不挤占页面空间。效果如下:
第一步:生成工作表目录(1)输入代码按Alt+F11打开VBA编辑器,然后在左侧工程资源管理器窗口,双击EXCEL对象里面的“Sheet1(目录)”,在右侧的代码窗口输入如下代码(加QQ群:920864360可以下载代码):PrivateSubworksheet_activate()DimiAsInteger,ssAsStringRange("a:a").Clear'清空A列Fori=1ToWorksheets.CountRange("A"&i).Value=http://www.ittribalwo.com/article/Worksheets(i).Name'逐个获取工作表名称NextiEndSub单引号'用于代码注释,其后的信息在VBA窗口里会显示为绿色,不会作为代码执行。
解析:Activate表示工作表激活。上述代码表示:一旦从其他工作表跳转到“目录”工作表,就执行代码,逐个获取工作表的名称,在目录工作表的A列生成目录。(2)生成目录首先单击任何一个非目录工作表,然后再单击切换到“目录”工作表,完成目录生成。
第二步:目录跳转到各工作表打开VBA编辑器,双击EXCEL对象里面的“Sheet1(目录)”,在右侧的代码窗口输入如下代码:PrivateSubworksheet_SelectionChange(ByValtargetAsRange)DimshtAsWorksheetIftarget.Count>1ThenExitSub'单击多个单元格不执行代码OnErrorResumeNext'碰到错误继续执行Setsht=Worksheets(target.Value)'查看是否存在以Target.Value命名的工作表IfErr.Number=0Then'如果错误为0,即工作簿存在以Target.Value命名的工作表,否则就不执行代码Worksheets(target.Value).Activate'激活该工作表EndIfEndSub
解析:SelectionChange表示点击单元格。上述代码意思:单击目录列中的某单元格就会跳转到以该单元格值命名的工作表。为了排除错误跳转,代码还设置了单击多个单元格不跳转、如果不存在以单元格值命名的工作表也不跳转等规则。
第三步:由各工作表跳回目录打开VBA编辑器,然后在左侧工程资源管理器窗口,双击EXCEL对象里面的“ThisWorkbook”,在右侧的代码窗口输入如下代码:PrivateSubWorkbook_SheetBeforeDoubleClick(ByValShAsObject,ByValTargetAsRange,CancelAsBoolean)Worksheets("目录").ActivateEndSub
Ok,现在我们就实现了双向跳转的全自动目录索引创建。最后提醒大家一下,如果想在工作簿使用VBA代码,除了EXCEL2003其他版本的都要保存为EXCEL启用宏的工作簿“xlsm”格式哦!《 Excel-VBA小白脱白记》——对VBA发憷的人很适合
如果您因为工作所需使用到Excel,不妨关注石油人网校《Excel极速贯通班》直播课系统学习。





