Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2010, 14:59   #1
A_L_E_X
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 45
Вопрос Имя кнопки без явного указания

Код:
Sub Имя_Кнопки()
'
' Макрос7 Макрос
' Макрос записан 13.03.2010 (User) Выделение кнопки
'
'Выбор кнопки и получение ее имени
    ActiveSheet.Shapes("СТВ_1").Select
        ИМЯ = Selection.Name

MsgBox "Имя кнопки " & ИМЯ

'Выделение начала диапазона по полученному имени
    Range(ActiveSheet.Shapes(ИМЯ).TopLeftCell.Address).Offset(1, 0).Select

End Sub
Вот такой код.
По нажатию на кнопку должно появиться ее имя и выделиться ячейка под ней.
Как сделать без прямого указания ее имени в 1й строке?
Если у вас и седьмой блин комом, к чёрту блины - пеките комочки!!!
A_L_E_X вне форума Ответить с цитированием
Старый 13.03.2010, 15:49   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот варианты попроще:

Код:
Private Sub CommandButton1_Click()
    Me.CommandButton1.TopLeftCell.Offset(1) = Me.CommandButton1.Caption
End Sub

Sub Кнопка()
    Me.Shapes(Application.Caller).TopLeftCell.Offset(1) = Application.Caller
End Sub
И пример файла (с 3 разными типами кнопок):

EducatedFool вне форума Ответить с цитированием
Старый 13.03.2010, 16:18   #3
A_L_E_X
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 45
По умолчанию

Спасибо, попробовал второй вариант - сработало.
Правда, после замены Me. на ActiveSheet.
Что зачит это Me?
И еще, почему в Вашем файле нет модулей, а пример работает?

P.S. "Благодарности принимаются ..." - можно подробности в личку?
Если у вас и седьмой блин комом, к чёрту блины - пеките комочки!!!
A_L_E_X вне форума Ответить с цитированием
Старый 13.03.2010, 16:24   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Что значит это Me?
Me - это ссылка на объект, в модуле которого расположен код.
В данном случае, код расположен в модуле листа - поэтому Me ссылается на лист, на котором расположены кнопки.

Цитата:
почему в Вашем файле нет модулей, а пример работает?
Код можно размещать как в стандартном модуле, так и в модулях листов или книги.
Есть, конечно, разница, но в данном случае это не принципиально.
EducatedFool вне форума Ответить с цитированием
Старый 13.03.2010, 16:52   #5
A_L_E_X
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 45
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
[B]
Код можно размещать как в стандартном модуле, так и в модулях листов или книги.
Есть, конечно, разница, но в данном случае это не принципиально.
Если еще не надоел - а в чем разница?
Если у вас и седьмой блин комом, к чёрту блины - пеките комочки!!!
A_L_E_X вне форума Ответить с цитированием
Старый 13.03.2010, 17:49   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
а в чем разница?
Разница между Me и activesheet: набрав Me в модуле листа, и нажав точку, получаем выпадающий список методов для объекта типа Worksheet - это облегчает (ускоряет) набор кода.
После набора activesheet и точки, к сожалению, выпадающий список свойств и методов не появляется (недоработка Microsoft)

Разницы при использовании различных модулей для обычных макросов, вызываемых кнопкой на листе, нет.
Модули листов и книги обычно используются для обработчиков событий соответствующих объектов - например, чтобы отловить изменение ячейки, открытие книги, активацию листа, и т.п.

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

Последний раз редактировалось EducatedFool; 13.03.2010 в 21:52.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в WORDPRESS запретить постинг без указания заголовка и тегов? Рыжая_Бестия WordPress и другие CMS 2 11.09.2009 15:44
Имя mp3 файла без использования Bass Дима я Мультимедиа в Delphi 7 28.07.2009 12:24
Как Как проверить кнопки мыши без OnMouseDown? Вадим Буренков Общие вопросы Delphi 3 22.05.2009 15:08
Обратиться к графику без указания имени ruavia3 Microsoft Office Excel 2 09.04.2009 14:12
Как узнать имя кнопки? LeGAl Microsoft Office Excel 1 10.03.2009 00:04