Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как програмно удалить кнопку? 
V
    Опции темы
likehood
Дата 25.4.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Как добавить я знаю, а как удалить? Имеется ввиду удалить при выгрузке надстройки (xla). Кстати, в каком событии это лучше прописать? 
PM MAIL   Вверх
Akina
Дата 25.4.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



А где именно кнопка? код ее размещения дай... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
likehood
Дата 25.4.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Кнопка в панели Standard.
Создаю так:
Код

myButton = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton)
 
PM MAIL   Вверх
Naghual
Дата 25.4.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



А myButton.Delete не пробовал? 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
likehood
Дата 26.4.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Цитата(Naghual @  25.4.2006,  18:40 Найти цитируемый пост)
А myButton.Delete не пробовал?

Пробовал, но безрезультатно. Возможно, я не там удаляю эту кнопку (в Workbook_Close()). 
PM MAIL   Вверх
Akina
Дата 26.4.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Сначала отвяжи переменную от кнопки (Set myButton=Nothing), после чего удали кнопку из коллекции (Application.CommandBars("Standard").Controls("ИмяКнопки").Delete). 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
likehood
Дата 26.4.2006, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Цитата(Akina @  26.4.2006,  09:15 Найти цитируемый пост)
 после чего удали кнопку из коллекции (Application.CommandBars("Standard").Controls("ИмяКнопки").Delete). 

А откуда брать "ИмяКнопки", я же при создании кнопки его не задавал. 
PM MAIL   Вверх
Akina
Дата 26.4.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(baronp @  26.4.2006,  10:25 Найти цитируемый пост)
А откуда брать "ИмяКнопки", я же при создании кнопки его не задавал.  

а заранее myButton.Name спросить влом? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
likehood
Дата 26.4.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Цитата(Akina @  26.4.2006,  09:48 Найти цитируемый пост)
а заранее myButton.Name спросить влом? 

Не влом, просто я в VBA еще совсем новичёк, а в справке свойства Name я не нашёл. В любом случае спасибо, но кнопка так и не удалилась. На всякий случай приведу код.
Код

Private Sub Workbook_Close()
    Set myButton = Nothing
    myButtonName = myButton.Name
    appExcel.CommandBars("Standard").Controls(myButtonName).Delete
End Sub


Все это находится в файле MyProject.xla->ЭтаКнига. Хотелось бы чтобы при включении моей надстройки создавалась кнопка, а при отключении удалялась. Пока же кнопка только создается и приходится удалять ее вручную.
 
PM MAIL   Вверх
Naghual
Дата 26.4.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Поменяй местами строки 
Set myButton = Nothing
myButtonName = myButton.Name

Должно быть:
myButtonName = myButton.Name
Set myButton = Nothing
 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
likehood
Дата 26.4.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Цитата(Naghual @  26.4.2006,  10:20 Найти цитируемый пост)
Поменяй местами строки 

Как же я это не заматил, совсем старый стал. Спасибо.
Но тем не менее и это не помогло. У меня такое впечатление, что Workbook_Close() вообще не вызывается, а то бы он по-идее должен был выдать ошибку в предыдущем коде. Может ошибка совсем в другом и куда проще чем я думаю. 
PM MAIL   Вверх
Дмит
Дата 26.4.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 21.4.2006
Где: г.Волгоград

Репутация: 8
Всего: 9



В блоке ЭтаКнига:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub
 
PM MAIL WWW   Вверх
likehood
Дата 26.4.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Дмит, спасибо большое, так действительно работает.
Только теперь выяснилось, что у моей кнопки нет свойства Name и тогда неясно как ее удалить.
Как узнать имя кнопки? 
PM MAIL   Вверх
Дмит
Дата 26.4.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 21.4.2006
Где: г.Волгоград

Репутация: 8
Всего: 9



1.Проще удалять, как говорилось
myButton.Delete
Однако во время отладки, если объект myButton теряется, удалять придётся вручную.
2.Если создавать кнопку
myButton = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton,  Temporary:=True)
то кнопка при перезагрузке Excel удалится сама.
3. myButtonName = myButton.Caption
обычно при создании кнопки .Caption задаётся и уже известно.

 
PM MAIL WWW   Вверх
likehood
Дата 26.4.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Дмит, огромное спасибо! Воспользовался 1-м вариантом - все заработало.

Осталась у меня одна проблема: в том же файле в модуле Module1 не удается изменить свойство ColorIndex :
Код

Range(OldRange).Interior.ColorIndex = vbYellow

Возникает Run-time error: Нельзя установить свойство ColorIndex класса Interior

При этом код
Код

Range(OldRange).Interior.ColorIndex = xlNone

отрабатывает без вопросов.
Где ошибка? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.