0

我在图表中有表示数据流中进程的形状;根据形状和形状名称中的文本,形状被超链接到位于另一个选项卡中的过程定义(例如,名为“Control ##”的形状带有文本“ABC”链接到定义 ABC 过程的选项卡)。如果我将形状中的文本更改为“XYZ”,是否有办法自动更新该形状中的超链接 - 即我希望超链接然后转到“XYZ”定义?我尝试了 SheetFollowHyperlink 事件过程,但似乎没有任何反应。我到目前为止的代码如下:

Sub AssignHyperlink()

Dim CallerShapeName As String
CallerShapeName = Application.Caller

With ActiveSheet
    Dim CallerShape As Shape
    Set CallerShape = .Shapes(CallerShapeName)

    Dim RowVar As Integer

    Err.Number = 0
    On Error Resume Next

    If InStr(CallerShapeName, "Control") = 1 Then

        RowVar = Application.WorksheetFunction _
            .Match(.Range("C2").Value & CallerShape.TextFrame2.TextRange.Text, _
            Sheets("Control Point Log").Range("A1:A700"), 0)

        If (Err.Number = 1004) Then
            MsgBox "No match found for this shape text in the Control Point Log"
            Exit Sub
        End If

        On Error GoTo 0

        .Hyperlinks.Add Anchor:=CallerShape, _
        Address:=ActiveWorkbook.Name & "#" & "'Control Point Log'!$C$" & RowVar

    Else

        RowVar = Application.WorksheetFunction _
            .Match(.Range("C2").Value & CallerShape.TextFrame2.TextRange.Text, _
            Sheets("Data Flow Glossary").Range("A1:A700"), 0)

        If (Err.Number = 1004) Then
            MsgBox "No match found for this shape text in the Data Flow Glossary"
            Exit Sub
        End If

        On Error GoTo 0

        .Hyperlinks.Add Anchor:=CallerShape, _
        Address:=ActiveWorkbook.Name & "#" & "'Data Flow Glossary'!$C$" & RowVar

    End If

End With

End Sub
4

1 回答 1

1

第一个。我假设您的目标是在单击形状后导航到工作簿中的范围

第二。要导航到的范围称为范围。

第三。要导航的范围等于形状中的文本。

我的建议是使用onAction形状触发器(assign macro右键单击形状时)

第四。我们需要以下过程 - 一个适用于所有形状。

Sub Hyperlink_Workaround()
    On Error GoTo ErrorHandler

    Dim curHL As String
        curHL = ActiveSheet.Shapes(Application.Caller).TextFrame2.TextRange.Text

    'which way do you define destination?
    'this way you go to named range

    Application.Goto Range(curHL), True
    Exit Sub
ErrorHandler:
    MsgBox "There is no range like " & curHL
End Sub

第五。测试,在分配了上述宏的工作表上具有以下形状,单击任何形状后,我们将移动到工作簿中的 ABC 或 DEF 范围。 在此处输入图像描述

第六。当您尝试导航到不存在的范围时,我添加了处理程序。

于 2013-04-27T06:58:50.150 回答