Необходимо запустить макрос на основе уникального идентификатора в ячейке листа - PullRequest
0 голосов
/ 19 июня 2019

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

Я попытался создать гиперссылку для запуска макроса, но код для идентификации гиперссылки не может быть специфичным для ячейки.Мне нужен более динамичный способ, чтобы Excel распознал, по какому идентификатору щелкнули, а затем использовал его для сбора остальной информации в этой строке (то есть скрытых столбцов).

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

У меня нет проблем с созданием гиперссылки на ничто, мне просто нужно Excel, чтобы запустить макрос при щелчке гиперссылки изатем в этом макросе определите уникальный идентификатор и / или строку, по которой щелкнули.После того, как я идентифицировал идентификатор или строку, я могу перейти оттуда к остальной информации в других столбцах.

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете использовать событие BeforeDoubleClick Рабочего листа:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address <> "$A$7" Then Exit Sub
' below, call the functions/subs that produce your output worksheet
MsgBox "You clicked on " & Target.Address
End Sub

Выше только работает в ячейке A7.Если это необходимо для применения ко всему столбцу A, слегка измените:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
' below, call the functions/subs that produce your output worksheet
MsgBox "You clicked on " & Target.Address
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...