2

我正在阅读一些使用宏自动创建目录的代码。我有一个包含多张工作表的工作簿,并且每天都在添加新工作表。每个工作表名称都是一个唯一编号,并且内部具有相同的模板。

我看到的代码只会提供将索引与工作表名称进行比较的选项。

我想知道我是否可以得到一个选项,它也可以从每张表中提取一个或两个值,如下所示:

Sr 编号 表名称 单元格 A1 单元格 A2 单元格 A3

每次打开索引表并将工作表名称列超链接到工作表时,我都需要运行宏。

有任何想法吗?

提前感谢您的帮助!

4

2 回答 2

2

多年来,此代码基于http://www.ozgrid.com/VBA/sheet-index.htm

在修改后的代码中,第 1 列将包含工作表的索引,第 2 列将显示所有工作表的单元格 A2 和 A3 的提取。注意,索引表第 1、2、3 列的旧内容将被彻底清除!!!

Private Sub Worksheet_Activate()

  Dim wSheet As Worksheet

  Dim i As Long

  i = 1
  With Me
    .Columns(1).ClearContents
    .Columns(2).ClearContents
    .Columns(3).ClearContents
    .Cells(1, 1) = "INDEX"
    .Cells(1, 1).Name = "Index"
  End With

  For Each wSheet In Worksheets

    If wSheet.Name <> Me.Name Then
      i = i + 1
      '
      ' in the WorkSheet: set up link to return to the index sheet from:
      '
      With wSheet
        .Range("A1").Name = "Start" & wSheet.Index
        .Hyperlinks.Add Anchor:=.Range("A1"), Address:="", _
          SubAddress:="Index", TextToDisplay:="Back to Index"
      End With
      '
      ' in the Index WorkSheet: set up link to go to WorkSheet:
      '
      Me.Hyperlinks.Add Anchor:=Me.Cells(i, 1), Address:="", _
        SubAddress:="Start" & wSheet.Index, _
        TextToDisplay:=wSheet.Name
      '
      Me.Cells(i, 2).Value = wSheet.Range("A2").Value
      Me.Cells(i, 3).Value = wSheet.Range("A3").Value
      '
    End If

  Next wSheet

End Sub
于 2013-10-17T09:13:33.670 回答
0

我在没有 VBA 的情况下这样做。这将创建一个自填充索引表,从每个工作表中提取信息。

自动填充索引表

  1. 创建一个名为wshNamesNew Name的in ,其值为:Name Manager=RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))

  2. 创建一个内容工作表,将其移动到工作簿中最左侧的选项卡(即位置一)。

  3. 插入一个新的数据表。

  4. 在第一列中输入数字 1-50(或足以覆盖您将使用的最大工作表数)。这些将是您的工作表索引 ID。

  5. 在第 2 列中,我们将使用一个公式来自动填充工作表名称。如果第一个工作表 ID 号 (1) 在单元格中B5,请使用它。RAND()*0保持公式不稳定并强制 Excel 在任何更改时刷新它。 =IFERROR(INDEX(wshNames,1+B5+RAND()*0),"")

  6. 您可以在下一列中使用以下公式从每个工作表中检索数据:=IFERROR(INDIRECT("'"&C5&"'!C2"),""),其中 C2 是您要从目标工作表中获取的单元格,C5 是您在第 2 列中获得的工作表名称。

  7. 如果要输入超链接以跳转到工作表,请在第 4 列中使用:=IF([@[Your Column 2 Heading]]="","",HYPERLINK("#'" & C5 & "'!A1", [@[Your Column 2 Heading]]))。您可以根据需要调整它以显示不同的链接文本。

  8. 根据需要从工作表中添加更多数据,重复此公式多次。

  9. 可选:添加条件格式以隐藏未使用的行。

注意:第 1 步依赖于 XLM 公式。更多信息在这里- 请注意,您仍然需要另存为 .xlsm。这种技术是通过this从David Hager那里借来的。

于 2013-10-17T09:25:18.280 回答