Excel — Как выборочно запускать код VBA события гиперссылки в зависимости от того, на какой рабочий лист он переходит?

#excel #vba #hyperlink

Вопрос:

У меня есть гиперссылки на листе, которые переходят к ячейкам, использующим именованный диапазон на других листах. Приведенный ниже рабочий код переключает рабочие листы (на основе гиперссылки) и помещает целевую ячейку в верхний левый угол, когда я нажимаю на гиперссылку. Это прекрасно работает.

Однако по одной конкретной гиперссылке я хочу, чтобы она переключалась только на рабочий лист, но я не хочу запускать приведенный ниже код, чтобы он был помещен в левом верхнем углу. Я просто хочу поменять рабочие листы и оставить позиционирование в покое.

Поскольку приведенный ниже код является событием при нажатии на любую гиперссылку, я хотел бы проверить конкретный целевой лист и не запускать приведенный ниже код.

Есть ли способ (если…тогда?) определить рабочий лист, на который я переключаюсь, и не выполнять приведенный ниже код?

Заранее спасибо.

 Option Explicit
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    ActiveWindow.ScrollRow = ActiveCell.Row
    ActiveWindow.ScrollColumn = ActiveCell.Column
End Sub
 

Код Psuedo — я ищу код VBA, выделенный жирным шрифтом.

 Option Explicit
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    **If (name in hyperlink) = "my target sheet" Then exit sub**

    ActiveWindow.ScrollRow = ActiveCell.Row
    ActiveWindow.ScrollColumn = ActiveCell.Column
End Sub
 

Ответ №1:

Ответ оказался простым. 🙂 Я ничего не знаю о VBA, но БигБен дал мне несколько советов.

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Name = "<target sheetname>" Then Exit Sub
    ActiveWindow.ScrollRow = ActiveCell.Row
    ActiveWindow.ScrollColumn = ActiveCell.Column
End Sub