Excel2k7/VBA: получение адреса ячейки при нажатии кнопки формы в ней


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

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

4 3

4 ответа:

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

  Dim r As Range
  Set r = ActiveSheet.Buttons(Application.Caller).TopLeftCell

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

По некоторым причинам я был вынужден использовать .Формы (Приложение.Звонящий) потому что тот .Кнопки (Приложение.Абонента) возвращается ошибка.

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

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

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