Excel VBA Гиперссылки Макросы

У меня есть рабочая тетрадь, первый лист которой представляет собой "шаблонный" лист, который я делаю копию перед вводом всех данных. На этом первом шаблонном листе есть макрос с гиперссылкой, который отлично работает, если я ввожу дату в шаблонный лист, но когда я делаю копию и использую гиперссылку, он возвращается к шаблонному листу и запускается оттуда.

Вот код, который я использую, который написан в области Объекты Sheet1 (а не в модуле), где я могу ошибаться, но гиперссылка не работает, если написана в области Объекты ThisWorkbook.

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 ответ

Не знаю, будет ли это работать для вашего варианта использования, но вы можете использовать гиперссылку для запуска обычной функции...

Например, в ячейке:

=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
Другие вопросы по тегам