Получить адрес ячейки при нажатии кнопки формы в ней - PullRequest
4 голосов
/ 02 июня 2010

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

Мне нужно знать, в какой ячейке есть эта нажатая кнопка.

Ответы [ 5 ]

4 голосов
/ 07 ноября 2010
  Dim r As Range
  Set r = ActiveSheet.Buttons(Application.Caller).TopLeftCell

Приведенный выше код даст вам адрес ячейки кнопки (это работает только для кнопок формы, а не активных кнопок x).

2 голосов
/ 04 февраля 2013

По некоторым причинам я был вынужден использовать .Shapes (Application.Caller), потому что .Buttons (Application.Caller) возвращал ошибку.

Dim r As Range
  Set r = ActiveSheet.Shapes(Application.Caller).TopLeftCell
0 голосов
/ 29 мая 2019

Я предлагаю попробовать это:

Dim r As Range
Set r = ActiveSheet.Shapes(Application.Caller).TopLeftCell
MsgBox r.Address

Здесь вы можете получить адрес, по которому расположена кнопка

0 голосов
/ 02 июня 2010

Пока вы находитесь в режиме разработки (то есть вы можете перемещать и изменять размер кнопок), вы можете дважды щелкнуть кнопку, и откроется редактор VBA с подпрограммой для события Click этой кнопки. Как уже упоминалось выше, они не связаны с ячейкой, в которой вы их каким-либо образом обнаружили.

0 голосов
/ 02 июня 2010

Элементы управления формой не связаны напрямую с ячейками листа. Они могут быть «привязаны» к ним для целей размера и выравнивания, но, насколько мне известно, я не имею каких-либо отношений с ячейкой, которые позволили бы вам получить ссылку на ячейку, если предположить, что ее можно определить без двусмысленности.

Хотя каждый элемент управления формы может запускать только один макрос, так что, конечно, это легко определить, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...