首页 > 解决方案 > `Range.Hyperlink.Shape` 有什么作用?

问题描述

我理解,这Shape.Hyperlink是与形状关联的超Shape.Hyperlink.Follow链接,并在 Web 浏览器中打开并显示超链接,就像我在形状上单击鼠标左键一样。

问:但是Range.Hyperlink.Shape,当我为它分配一些形状时,它会做什么?

它似乎是与超链接相关的形状......

当我将鼠标悬停在超链接的文本或其他内容上时,它会弹出形状吗?

对于加里的

Sub DummySub(rng As Range, shp As Shape)               
   rng.Hyperlinks.Add rng, "http://microsoft.com", "", "Hint"
   rng.Hyperlinks(1).Shape = shp 
End Sub

标签: excelvba

解决方案


对于工作表形状,您可以添加Link. 右键单击它或在 VBA 代码中。您可以在Existing file or web Page、或之间Place in this Document进行选择。Create new DocumentE-mail-Address

如果您选择“现有文件或网页”并为其提供网页地址,它将成为一个超链接。

但是Range.Hyperlink.Shape在VBA中没有意义,恐怕......

VBA中Hyperlink不存在 Range 属性。只有Hyperlinks. Hyperlink.Shape是的...

请测试下一个代码:

Sub testRangeHiperlynk()
  Dim HypShape As Shape

    Set HypShape = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 300, 160, 100, 20)
      HypShape.Name = "testRect"
    HypShape.TextFrame.Characters.text = "Go to Google"
    ActiveSheet.Hyperlinks.aDD Anchor:=HypShape, address:="http://www.google.com", SubAddress:="GoToGoogle!A1"
    Debug.Print ActiveSheet.Shapes("testRect").Hyperlink.Shape.Name
    ActiveSheet.Shapes("testRect").Hyperlink.Shape.Fill.ForeColor.RGB = RGB(255, 0, 0)
End Sub

它创建一个矩形,将其命名为“textRect”,在上面写一些东西,然后在 A1 中创建一个(某种)超链接,但参考新创建的形状,targeting Google.com

然后查看HypShape.Hyperlink.Shape.Name立即窗口中返回的内容以及使用定义的形状如何Hyperlink.Shape.Fill着色...

Range.Hyperlink.Shape在 VBA 中不存在 :)

编辑:该属性可以更聪明地使用。运行此代码(在第一个代码之后),您将能够根据工作表超链接设置形状:

Sub testHypShape()
 Dim H As Hyperlink, sh As Shape
  For Each H In ActiveSheet.Hyperlinks
    If H.Shape.Name = "testRect" Then Set sh = H.Shape: Exit For
  Next
  sh.Fill.ForeColor.RGB = RGB(0, 225, 225)
End Sub

推荐阅读