图中有表示数据流中进程的形状;形状是超链接到位于另一个选项卡中的进程定义的,该选项卡基于形状和形状名称中的文本(例如,带有文本" ABC“链接到定义ABC进程的选项卡的"Control ##”形状)。如果我将形状中的文本更改为"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发布于 2013-04-27 06:58:50
1.我假设您的目标是在单击该形状后导航到工作簿中的范围。
2.导航到的区域被命名为range。
3.导航范围等于形状中的文本。
我的建议是使用形状的onAction触发器(当右键单击形状时使用assign macro)。
4rd.我们需要以下程序--所有形状的一个。
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 Sub5.测试,在工作表上有以下形状并分配上述宏,单击任何形状后,我们将移动到工作簿中的ABC或范围。

6.我在尝试导航到不存在的范围时添加了处理程序。
https://stackoverflow.com/questions/16246521
复制相似问题