图表目录怎么分开自动生成(Excel 自动目录,真好用!我们不一样!上源码和详细注释)

Excel 主动目次,真好用!我们不一样!上源码和具体正文

非同寻常的"Excel 主动目次":

我这个不同于网上别的那些不够主动化的、不够标准化的"Excel 主动目次"。

Excel事情簿内有太多事情表时,Excel自带的事情表目次,一屏体现不完

本文VBA步骤主动天生的目次如下图:

在Index事情表内天生完备目次,有主动化,标准化等优点;且带超链接,可跳转到随意事情表

优点:

  • 主动化:只需进入Index事情表,步骤即可主动创建或更新事情簿索引目次。
  • 简便化:无需任何别的设置:无需创建按钮或公式等等,统统都不必要
  • 标准化:每次天生的目次都有一致标准格式
  • 体系化:带超链接(蓝色下划线),点击事情表称呼,就跳转到事情表
  • 智能化:默许不体现隐蔽事情表,但经过挑选体现出来;主动设置字体魄式、保护目次
  • 及时化:运转快速,刹时完成;随时更新,主动更新

VBA源码和具体正文:

' Thisworkbook.cls Option Explicit Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = "Index" Then Call updateIndex ' Excel VBA 持续跨越 by Jeffrey JC Li End If End Sub Private Sub updateIndex _ (Optional wbk As Workbook) ' Excel VBA 持续跨越 by Jeffrey JC Li Application.ScreenUpdating = False Debug.Print Now, "Start: updateIndex()." Dim rtv Dim wst As Worksheet Dim lRow1 As Long Dim lCol1 As Long Dim lRowMax As Long Dim lColMax As Long Dim lColLink As Long Dim ll As Long Dim tm0 As Date Dim tm1 As Date tm0 = Timer If wbk Is Nothing Then Set wbk = ActiveWorkbook If Not SheetExists("Index", wbk.Name) Then wbk.Sheets.Add.Name = "Index" End If wbk.Sheets("Index").Move Before:=Sheets(1) Set wst = wbk.Sheets("Index") lRow1 = 3 ' 目次内容第一行所行家号=3 lCol1 = 1 ' 目次最右方列号 lRowMax = wbk.Sheets.Count lRow1 - 1 ' 目次最初一行的行号 lColLink = 2 ' 目次链接地点列号 lColMax = lColLink 1 ' 目次最右方列号 ' 目次共3列:编号,称呼链接,和称呼文本 Call clearIndex ' 先扫除目次 ' With wst ' 取消保护 If .ProtectionMode = True Then Call unprotectSheet(wst) ' End If ' 填写表头 .Cells(1, 1).Value = "Index" .Cells(1, 1).Value = wbk.Name .Cells(2, 1) = "No. 编号" .Cells(2, 2).Value = "Sheet 事情表" .Cells(2, 3).Value = "Visible 对否可见" .Cells(2, 4).Value = "Remark 备注" '天生目次超链接和文本 For ll = 1 To wbk.Sheets.Count '填写事情表序号 .Cells(ll lRow1 - 1, lCol1).Value = ll '填写每个事情表称呼,并天生超链接 .Hyperlinks.Add _ Anchor:=.Cells(ll lRow1 - 1, lCol1 1), _ Address:="", _ SubAddress:="'"

GM游戏 更多