2015-11-25 3 views
0

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

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

То, что я пробовал до сих пор, является кнопкой excel, но у нее нет способа привязки к определенной ячейке. Также макрос должен назначаться вручную каждый раз, когда добавляется новая строка. Я также пробовал событие «Worksheet_SelectionChange» с фильтрацией в определенный столбец, содержащий текстовый текст. Это работает отлично, но некоторые пользователи используют клавиши со стрелками для навигации по листу, который случайно запускает макросы, если выбран макрос ячейки. Кроме того, курсор мыши не изменяется на указательный палец во время наведения. Последняя попытка состояла в том, чтобы попробовать =HYPERLINK("#'Sheet1'!E3";"Run macro") -функция и использовать ее с помощью «Worksheet_FollowHyperlink». Однако в этом случае событие не запускается, если гиперссылка указывает на текущий лист.

Так что любые новые идеи или, возможно, переработка некоторых из них для преодоления проблем, которые я описал? enter image description here

ответ

1

Вот пример того, как вы могли бы сделать это:

  • кнопку Добавить (MSForm, не ActiveX) в клетке. Убедитесь, что верхний левый угол кнопки находится внутри ячейки для строки, к которой вы хотите обратиться.
  • Назначить макрос (скажем, "ММ" здесь для простоты)

В Macro:

Sub MM() 
    Dim rowNumber As Long 
    rowNumber = Shapes(Application.Caller).TopLeftCell.Row 

    Debug.Print Range("A" & rowNumber).Value 
End Sub 
+0

Это в значительной степени решить мою проблему. Большое спасибо! – user3820047

Смежные вопросы