添加具有多个有效引用的TOC超链接

时间:2016-11-08 17:15:04

标签: excel-vba vba excel

我目前正在寻求通过向现有“内容”表单添加超链接来扩展现有的启用宏的工作簿的功能。工作簿的操作非常类似于仪表板:“内容”表上的按钮命令激活从远程源中提取模板的宏,将工作表名称更改为唯一,同时标识要添加的位置,将它们复制到本地工作簿,以及更新内容表上位置列表的底部,并添加了位置。

当我在位置之间具有多次相同计算迭代的位置时,问题就出现了,并且在同一工作簿中最多有30张。最终用户需要时间单击所有选项卡以查找特定位置所需的特定计算。所以,我希望做的是在内容页面上创建一个超链接,链接到与相关位置相关的第一个计算。

例如,位置A 有3个与之关联的不同计算,而位置B 有4.我如何识别哪个工作表包含关联位置的第一个计算?

我的想法:我有一个排序代码(编辑:见下文)在添加新位置时实施,其中对内容表进行排序,然后遍历整个工作簿,对名为位置的工作表进行分组X(计算n)并根据内容表上的新订单将工作表组推送到工作簿的后面。我认为这将是插入超链接的理想位置,但我不知道如何去做。也许声明并为字符串变量分配当前所选位置的值,进行逻辑比较并计算分配给所述位置的页数,在位置名称更改时重置计数器,并在超链接锚中使用活动工作表时计数器等于0?

编辑:

Dim Group_Sheets As Worksheet
Dim wSheet As Variant
Dim SortRng, rng As Range

Set SortRng = Range(Range("A6"), Range("A6").End(xlDown))
For Each rng In SortRng
    ReDim wSheet(0)
    For Each Group_Sheets In ThisWorkbook.Worksheets
        If Left(Group_Sheets.Name, Len(rng)) = rng Then
            wSheet(UBound(wSheet)) = Group_Sheets.Name
            ReDim Preserve wSheet(UBound(wSheet) + 1)
        End If
    Next
    ReDim Preserve wSheet(UBound(wSheet) - 1)
    With Worksheets(wSheet)
        .Select
        .Move after:=Worksheets(Worksheets.Count)
    End With
Next

1 个答案:

答案 0 :(得分:0)

移动工作表组时添加超链接已解决问题。

Set SortRng = Range(Range("A6"), Range("A6").End(xlDown))
For Each rng In SortRng
    ReDim wSheet(0)
    For Each Group_Sheets In ThisWorkbook.Worksheets
        If Left(Group_Sheets.Name, Len(rng)) = rng Then
            wSheet(UBound(wSheet)) = Group_Sheets.Name
            ReDim Preserve wSheet(UBound(wSheet) + 1)
        End If
    Next
    ReDim Preserve wSheet(UBound(wSheet) - 1)
    With Worksheets(wSheet)
        .Select
        .Move after:=Worksheets(Worksheets.Count)
    End With
'Select the sheet to which the hyperlink directs HERE
    Sheets(Sheets.Count).Select
'Insert hyperlink HERE
    TOC_Sheet.Hyperlinks.Add Anchor:=rng.Offset(0, 1), _
        Address:="", SubAddress:="'" & ActiveSheet.Name & "'!A1", _
        ScreenTip:=ActiveSheet.Name, _
        TextToDisplay:="Link"
Next