我有一个宏,用于在工作簿的前面创建摘要表。在工作簿中的工作表之后创建形状并对其进行标记,然后将超链接添加到形状中以重定向到这些工作表,但是,当我记录宏来执行此操作时,生成的代码是:

ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=""


在excel中手动创建的超链接在录制宏时工作正常,将鼠标悬停在它们上时,显示文件路径和“-Sheet!A1”,但它们似乎并没有真正将链接位置添加到的地址部分中宏。有人知道该地址部分中链接到工作表的代码吗?

最佳答案

在这种情况下,宏记录器不会记录实际发生的情况。您要查找的属性是SubAddress。在您的代码中正确设置了Address

从形状创建超链接而不选择它
您希望尽可能避免选择代码中的内容,在这种情况下,绝对可以。创建一个形状变量并将其设置为要修改的形状,然后将超链接添加到该形状所在的图纸上。请注意,您还可以设置屏幕提示的文本。

在下面的示例中,我要修改的形状在工作表6上,并超链接到工作表4上的某个范围。

Sub SetHyperlinkOnShape()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet6")

    Dim hyperLinkedShape As Shape

    Set hyperLinkedShape = ws.Shapes("Rectangle 1")

    ws.Hyperlinks.Add Anchor:=hyperLinkedShape, Address:="", _
        SubAddress:="Sheet4!C4:C8", ScreenTip:="yadda yadda"
End Sub

关于excel - Excel VBA添加超链接以成形以链接到另一个工作表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31225024/

10-14 11:41
查看更多