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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 10:47   #1
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию Как добавить макрос в меню?

Как добавить макрос в созданное меню на панели инструментов?
PARTOS вне форума Ответить с цитированием
Старый 01.06.2010, 11:07   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Следующий макрос добавит в стандартную панель инструментов "Меню", создаст кнопку "Кнопка" и назначит ей макрос "Test".
Код:
Sub Main()
    Set myMenuBar = CommandBars.ActiveMenuBar
    Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=False)
    newMenu.Caption = "Меню"
    Set ctrl1 = newMenu.CommandBar.Controls.Add(Type:=msoControlButton, ID:=1)
    With ctrl1
        .Caption = "Кнопка"
        .TooltipText = "Кнопка"
        .Style = msoButtonCaption
        .OnAction = "Test"
    End With
End Sub
Посмотрите пример во вложении. Выполните макрос "Main". Для удаления созданного меню, выполните макрос "Del".
Если макрос, который назначен кнопке находится в другой книге (нужно, чтобы она была открыта), или в надстройке, то кроме имени макроса нужно указать полный путь.
Вложения
Тип файла: rar Книга1.rar (6.7 Кб, 78 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.06.2010, 11:45   #3
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Следующий макрос добавит в стандартную панель инструментов "Меню", создаст кнопку "Кнопка" и назначит ей макрос "Test".
Код:
Sub Main()
    Set myMenuBar = CommandBars.ActiveMenuBar
    Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=False)
    newMenu.Caption = "Меню"
    Set ctrl1 = newMenu.CommandBar.Controls.Add(Type:=msoControlButton, ID:=1)
    With ctrl1
        .Caption = "Кнопка"
        .TooltipText = "Кнопка"
        .Style = msoButtonCaption
        .OnAction = "Test"
    End With
End Sub
Посмотрите пример во вложении. Выполните макрос "Main". Для удаления созданного меню, выполните макрос "Del".
Если макрос, который назначен кнопке находится в другой книге (нужно, чтобы она была открыта), или в надстройке, то кроме имени макроса нужно указать полный путь.
Спасибо за подсказку. В предложенном варианте в создаваемое меню добавляется только один макрос. Может Вы подскажете вариант универсального макроса, который сможет добавлять бесконечное количество макросов (изменяя в коде Вашего макроса только название добавляемого макроса) в уже созданное меню.
Другими словами:
1. Я вручную создал «Новое меню» (Вид - Панели инструментов - Настройка) – оно остаётся постоянно на панели инструментов
2. Я написал какой-либо макрос (учусь только) и хочу, чтобы он находился в «Новом меню»
3. Я включаю Ваш макрос в режиме редактирования – вставляю в нужное место названия моего творения – мой макрос появляется в «Новом меню»

Спасибо
PARTOS вне форума Ответить с цитированием
Старый 01.06.2010, 12:23   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Один из вариантов:
1. Вручную создать «Новое меню» (Вид - Панели инструментов - Настройка)
2. Затем Вид - Панели инструментов - Настройка - Команды - в левом окне выбрать "Элементы управления".
3. В правом окне выбрать "кнопка" и левой кнопкой мыши перетащить ее в созданную панель инструментов.
4. Правый клик на этой кнопке - "назначить макрос".
5. выбрать требуемый макрос из предложенных (существующих в книге).
6. Закрыть окно настройки.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.06.2010, 12:40   #5
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Один из вариантов:
1. Вручную создать «Новое меню» (Вид - Панели инструментов - Настройка)
2. Затем Вид - Панели инструментов - Настройка - Команды - в левом окне выбрать "Элементы управления".
3. В правом окне выбрать "кнопка" и левой кнопкой мыши перетащить ее в созданную панель инструментов.
4. Правый клик на этой кнопке - "назначить макрос".
5. выбрать требуемый макрос из предложенных (существующих в книге).
6. Закрыть окно настройки.

Спасибо за подсказку.
PARTOS вне форума Ответить с цитированием
Старый 05.02.2013, 10:28   #6
Decor
Пользователь
 
Регистрация: 04.02.2013
Сообщений: 11
По умолчанию

Не могу понять одну непонятку...

Создаётся кнопка в меню инструментов:

Sub Add_CmBar()
Call Remove_CmBar
With Application.CommandBars.Add(Name:=" RemoveR", Position:=msoBarTop, temporary:=True)
With .Controls.Add
.Caption = "УДАЛИТЬ СТРОКИ"
.Style = 2
.OnAction = "Remove_Rows"
End With
.Visible = True
End With
End Sub

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

Вот, что в результате получается:



Если впоследствии вручную перетащить куда надо, то после перезагрузки
книги всё возвращается на место.

То, что знал и применял - не помогло...

Как же решить эту дилемму???
Decor вне форума Ответить с цитированием
Старый 05.02.2013, 10:55   #7
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Ответил Вам в личную почту. Кратко: устанавливаете панель в нужное место, эти настройки перед закрытием книги записываются в реест, а при последующем открытии считываются и назначаются.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 05.02.2013, 11:44   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Попробуйте вот это
Как расположить созданую панель инструментов сразу после стандартной, а также, сделать невозможным её скрытие, изменение и перемещение, вручную ?
мне помогло
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 05.02.2013, 21:57   #9
Decor
Пользователь
 
Регистрация: 04.02.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Ответил Вам в личную почту. Кратко: устанавливаете панель в нужное место, эти настройки перед закрытием книги записываются в реест, а при последующем открытии считываются и назначаются.
Я, к сожалению, имею пока очень мало сообщений и поэтому не могу в данный момент смотреть личные мессаги.

Мог бы ты сюда кинуть сообщение?

Последний раз редактировалось Decor; 06.02.2013 в 09:31.
Decor вне форума Ответить с цитированием
Старый 05.02.2013, 21:59   #10
Decor
Пользователь
 
Регистрация: 04.02.2013
Сообщений: 11
По умолчанию

Посмотрел.., буду пробовать завтра на работе...
Decor вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как добавить в поп-ап меню иконки???delphi ArcaN0id Помощь студентам 11 24.04.2010 23:14
Добавить условие в макрос Pilot Microsoft Office Excel 8 20.02.2010 17:35
Как добавить свой раздел в стандартное контекстное меню yaver Общие вопросы Delphi 2 26.11.2008 19:44
Как в Excele2007 назначить макрос на пункт пользовательского меню Suroejka Microsoft Office Excel 3 28.05.2008 14:02
Как добавить подменю в системное контекстное меню Lucky13 Win Api 5 19.03.2007 20:17