Доброго утра,«FollowHyperlink» применяется ко всем листам
Я работаю на таблице, которая предназначена быть максимально автоматизирована, насколько это возможно для моих неопытных коллег.
Одна из особенностей, с которой у меня возникают трудности, заключается в использовании гиперссылок на «открыть» и «закрыть» скрытый рабочий лист. Идея состоит в том, что пользователю доступен только Sheet1, пока они не нажмут на «open» (ссылка в Sheet1), которая запускает мой макрос gotoHidden
(работает отлично) и показывает скрытый лист, который назван в честь номера строки, где находится гиперссылка (звучит сложнее, чем есть, но эта часть работает)
Когда пользователь закончил просмотр или редактирование скрытого в данный момент скрытого листа, он должен нажать «закрыть» (ссылку на скрытом листе), которая должна запускать мой макрос closeHidden
. Если я пройду через макрос closeHidden
, используя F8, он будет работать так, как я ожидаю, но я не могу заставить его запускаться при нажатии ссылки.
Ниже приведен код, я работаю с:
Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Name = "Open" Then
gotoHidden
Else
If Target.Name = "Close" Then
closeHidden
End If
Exit Sub
End If
End Sub
Изначально я создал этот код, а также два моих макросов для gotoHidden
и closeHidden
, в редакторе VBA для Лист1, и «открытым» часть делает работа.
Я попытался переместить весь код в объект ThisWorkbook, думая, что это сделает его доступным со всех листов, но это, похоже, не работает.
я могу заставить его работать, если добавить следующий код для отдельного листа:
Public Sub closeHidden()
ActiveSheet.Visible = xlVeryHidden
Sheets(1).Activate
End Sub
Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Name = "Close" Then
closeHidden
End If
Exit Sub
End Sub
Однако отдельные листы генерируются различным макро (createNew
), и я не знаю, есть ли способ автоматического добавления этого кода на каждый новый лист по мере его создания.
Я чувствую, что я очень близок к решению этого вопроса, но я посмотрел на столько разных постов и пробовал так много комбинаций, которые мне просто не кажутся самим собой.
Может ли кто-нибудь увидеть решение?
Надеюсь, это ясно, чего я пытаюсь достичь, но, если необходимо, попросите уточнить.
Большое спасибо заранее.
Обновление: Я просто попытался добавить код в модуль вместо объекта, который также не работал. Однако добавление двух моих макросов (gotoHidden
и closeHidden
) в модуль позволяет мне называть их из отдельных объектов, что делает вещи немного опрятными и может помочь мне привести мой код в будущем.
Если я пытаюсь применить «Worksheet_FollowHyperlink» к неизвестному количеству рабочих листов, я бы, скорее всего, попробовал кодирование «Workbook_SheetFollowHyperlink», отбрасывая действия, когда «sh.name = Worksheets (« Мастер »). – Jeeped