excel vba将超链接添加到组中的形状

excel vba将超链接添加到组中的形状,vba,excel,Vba,Excel,我完全不知道为什么我不能向形状添加超链接,但前提是它是由单元格内函数触发的。当我从即时窗口手动运行它时,一切都很好。此外,我也没有任何手动操作的问题 我也不知道如何在vba中编写良好的错误处理 这是示例代码 function testCase(xlLabelName as String) Dim sht As Worksheet For Each sht In ActiveWorkbook.Sheets If shapeExist(sht, xlLabelName) Th

我完全不知道为什么我不能向形状添加超链接,但前提是它是由单元格内函数触发的。当我从即时窗口手动运行它时,一切都很好。此外,我也没有任何手动操作的问题

我也不知道如何在vba中编写良好的错误处理

这是示例代码

function testCase(xlLabelName as String)
Dim sht As Worksheet
    For Each sht In ActiveWorkbook.Sheets
        If shapeExist(sht, xlLabelName) Then
            sht.Hyperlinks.Add Anchor:=sht.Shapes(xlLabelName), Address:="", SubAddress:="a1" 
            testCase = "Bingo"
        End If
    Next sht
End Function
从即时窗口中,我得到了宾果答题,在单元格中,我得到了arg错误,这是唯一未执行的行。 我尝试先使用

Dim gshp As Shape
Dim shrng As ShapeRange
Dim tmp As String
Set gshp = sht.Shapes(getParentShape(xlLabelName))
tmp = gshp.Name
Set shrng = gshp.Ungroup
sht.Hyperlinks.Add Anchor:=sht.Shapes(xlLabelName), Address:="", SubAddress:="a1"
shrng.Regroup
shrng.name = tmp
但它也失败了。仍然是即时窗口给了我正确的答案(
bingo
) 所有其他操作都按照我的需要完成(绘画),只有这一个失败。 若我去掉这条有问题的线,我在单元格中得到了正确的响应。 我试图处理的形状是
msofreform

检查形状是否存在的功能只是循环检查工作表中的所有形状并比较名称(Lame,但目前它仍在工作)


提前感谢。

如果我是你,我会为我的形状指定一个宏,以便在单击时运行以下子项:

sub hyperlinkShape
    ThisWorkbook.FollowHyperlink ("C:\temp\test.xlsx")
End sub
如果要在工作簿中查找超链接,例如更改工作表,可以编写

sub hyperlinkShape
    Sheets("Desiredsheet").Select
End sub
这样,超链接将不会附加到形状,而是附加到sub。单击形状可以启动sub


对于错误处理,我建议您阅读几个月前我发布的这个帖子的答案:

UDF不能添加超链接-至少没有复杂的解决方法是不行的。为什么你想从一个功能而不是说一个事件?你是我个人的耶稣基督。现在我知道该找什么了。