Excel VBA超链接宏

时间:2018-01-09 18:49:50

标签: excel vba hyperlink

我有一个工作簿,第一张是"模板"在输入所有数据之前我制作了一份副本。第一个模板工作表有一个超链接宏,如果我在模板工作表中输入日期,工作正常,但是当我复制并使用超链接时,它会跳回到模板工作表并从那里运行。

以下是我正在使用的代码,它写在Sheet1 Objects区域(而不是模块)中,这可能是我出错的地方,但超链接似乎并不是如果写在ThisWorkbook Objects区域,则工作。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    If Target.Range.Address = "$U$5" Then
        Dim MyDir
        MyDir = Range("T5").Value
        Select Case MyDir
            Case "N":
                Range("B3:E3,C10,C16:D16,H3:K3,I10,I16:J16,N3:Q3,O10,O16:P16").Select
                Range("B3").Activate
            Case "S":
                Range("B4:E4,C11,C19:D19,H4:K4,I11,I19:J19,N4:Q4,O11,O19:P19").Select
                Range("B4").Activate
            Case "E":
                Range("B5:E5,C12,C22:D22,H5:K5,I12,I22:J22,N5:Q5,O12,O22:P22").Select
                Range("B5").Activate
            Case "W":
                Range("B6:E6,C13,C25:D25,H6:K6,I13,I25:J25,N6:Q6,O13,O25:P25").Select
                Range("B6").Activate
            Case Else
                MsgBox "No Direction Entered"
        End Select
    End If
End Sub

我不想使用按钮或Activex / Forms按钮,并且需要它是一个超链接(因为一旦我输入了我需要的数据,那么复制的纸张本身会被复制到另一个工作簿中,这将复制任何使用它的按钮或控件,我不想在每次填写表单时都记得删除它们。

有没有办法让复制的超链接宏在复制的工作表中工作而不必返回原始的模板工作表?

1 个答案:

答案 0 :(得分:0)

不知道它是否适用于您的用例,但您可以使用超链接触发常规功能......

例如,在单元格中:

=HYPERLINK("#DoSomething()","Do Something")

在常规模块中:

Public Function doSomething()

    'you can use Application.Caller to get the triggering cell:
    Debug.Print "doSomething", Application.Caller.Address, Application.Caller.Parent.name
    Set doSomething = Selection.Offset(0, 1) 'or wherever you want to link to

End Function