С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Dion-one
1 / 1 / 0
Регистрация: 09.06.2010
Сообщений: 11
1

Разработка меню

29.10.2010, 20:48. Просмотров 2280. Ответов 15
Метки нет (Все метки)

Люди помогите пожалуйста, ваще не понял как работать с оператором Set =(
Мне задали во такую задачу
Создать документ, в котором :
-Будут отключены все встроены меню.
-Созданно собственное иеархическое меню, на верхнем уровне которого имееться как минимум один
пункт, на втором уровне - два под меню, каждое из которых содержит как минимум по одной команде.

Помогите пожалуйста!!!!!!!!!!!!

Добавлено через 3 часа 11 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim CBar1 As CommandBar
Dim Menu1 As CommandBarPopup
Dim Menu2 As CommandBarPopup
Dim SubMenu1 As CommandBarPopup
Dim SubMenu2 As CommandBarPopup
Dim SubMenu1Item As CommandBarButton
Dim SubMenu2Item As CommandBarButton
Set CBar1 = CommandBars.Add("Мое иеархическое меню", msoBarTop)
CBar1.Enabled = True
CBar1.Visible = True
Set Menu1 = CBar1.Controls.Add(msoControlPopup) ' Создаем верхнее меню 1
Set Menu2 = CBar1.Controls.Add(msoControlPopup) ' Создаем верхнее меню 2
Menu1.Caption = " 1 уровень"
Menu2.Caption = " 2 уровень"
Set SubMenu1 = Menu1.Controls.Add(msoControlPopup) ' Создаем вложенное меню
SubMenu1.Caption = "Подменю 1"
Set SubMenu2 = Menu2.Controls.Add(msoControlPopup) ' Создаем вложенное меню
SubMenu2.Caption = "Подменю 2" ' Создаем элемент во вложенном подменю
Set SubMenu1Item = SubMenu1.Controls.Add(msoControlButton)
SubMenu1Item.Caption = "Элемент подменю 1"
Set SubMenu2Item = SubMenu2.Controls.Add(msoControlButton)
SubMenu2Item.Caption = "Элемент подменю 2"
Вот сделал ток я не понял как отключить все строенные меню, помогите пожалуйста)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2010, 20:48
Ответы с готовыми решениями:

Создание нового меню в меню Файл в Excel
Небольшое вступление: я решил сделать надстройку для Excel, при ее установке в...

Разработка теста
Подскажите как разработать тест в VBA Excel? если можно, то с...

Разработка программного модуля
Нужна помощь с интегралом, кто может пожалуйста помогите

Разработка управляющего Автомата
Разработка управляющего автомата , который исполняет следущие ф-ии : -...

Разработка форм VBA
Добрый день. Возникла такая проблема. Есть задание. И даже пример кода,...

15
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
29.10.2010, 22:42 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
With Application.CommandBars.Add(Name:="Меню", _
        MenuBar:=True, Temporary:=True)
    .Visible = True
 
With .Controls
    
'
'Создание строки меню Файл
'
    With .Add(Type:=msoControlPopup)
        .Caption = "&Файл"
        With .Controls
        With .Add(Type:=msoControlButton)
            .Caption = "Сохранить"
            .OnAction = "Module1.Запись"
        End With
        With .Add(Type:=msoControlButton)
        .Caption = "Сохранить как"
        .OnAction = "Module1.СохранитьКак"
        End With
        With .Add(Type:=msoControlButton)
        .Caption = "Закрыть"
        .OnAction = "Module1.Закрыть"
        End With
    End With
End With
End With
End With
1
Вождь
216 / 48 / 2
Регистрация: 18.02.2010
Сообщений: 81
30.10.2010, 07:43 3
Надо бы указать, где будет создаваться и хранится меню. Что-то типа:
Visual Basic
1
2
3
Application.CustomizationContext = NormalTemplate ' глобальные настройки
' или
Application.CustomizationContext = ActiveDocument.AttachedTemplate ' шаблон активного документа
Если нужен только код, то это не особо важно, но может порадовать препода.
1
Dion-one
1 / 1 / 0
Регистрация: 09.06.2010
Сообщений: 11
30.10.2010, 12:01  [ТС] 4
Спасиб большое =)
А как назначить стандартные операции? Ну например при нажатии "Выход" выходило))
Там вродь ID у каждого свой)) иль нет?
0
Вождь
216 / 48 / 2
Регистрация: 18.02.2010
Сообщений: 81
30.10.2010, 12:29 5
Цитата Сообщение от Dion-one Посмотреть сообщение
...как назначить стандартные операции...ID у каждого...
Уточните, что надо: поместить в Ваше меню стандартные кнопки, или создать свои кнопки, выполняющие стандартные операции. В первом случае, при добавлении кнопки надо указывать ID (список легко найти), во втором - включить запись макроса, нажать Enter, остановить запись и назначить полученный макрос кнопке.
0
Dion-one
1 / 1 / 0
Регистрация: 09.06.2010
Сообщений: 11
30.10.2010, 14:20  [ТС] 6
Необходим первый вариант, нужен список, и пример использования ID
0
Вождь
216 / 48 / 2
Регистрация: 18.02.2010
Сообщений: 81
31.10.2010, 10:06 7
Примерчик:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim customBar As CommandBar
Dim newButton As CommandBarButton
Set customBar = CommandBars.Add("Моя панель")
' кнопка "Вырезать"
Set newButton = customBar.Controls _
    .Add(msoControlButton, CommandBars("Edit") _
    .Controls("Вырезать").Id)
' кнопка "Копировать"
Set newButton = customBar.Controls _
    .Add(msoControlButton, CommandBars("Edit") _
    .Controls("Копировать").Id)
' кнопка "Вставить"
Set newButton = customBar.Controls _
    .Add(msoControlButton, CommandBars("Edit") _
    .Controls("Вставить").Id)
customBar.Visible = True
0
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
31.10.2010, 10:14 8
-Будут отключены все встроены меню.
-Созданно собственное иеархическое меню
Visual Basic
1
Set customBar = CommandBars.Add("Моя панель")
Всё-таки вопрос о меню или о панели инструментов? Разные, вроде, весчи
0
Dion-one
1 / 1 / 0
Регистрация: 09.06.2010
Сообщений: 11
31.10.2010, 10:23  [ТС] 9
Цитата Сообщение от Alex77755 Посмотреть сообщение
Всё-таки вопрос о меню или о панели инструментов? Разные, вроде, весчи
Вопрос об меню! Панель инструментов мне не надо =)
0
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
31.10.2010, 10:25 10
С меню я пример выкладывал. Вот только как прикрутить ID не знаю
0
Dion-one
1 / 1 / 0
Регистрация: 09.06.2010
Сообщений: 11
31.10.2010, 10:28  [ТС] 11
За пример пасиб )) Я его дополнил, а вот ID тож не понял как прикреплять, ну щас ещо попытаюсь ;-)
0
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
31.10.2010, 11:43 12
А ID Нашёл какие тебе нужны?

Добавлено через 55 минут
Оказывается всё очень просто
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Макрос1()
With Application.CommandBars.Add(Name:="Меню", _
        MenuBar:=True, Temporary:=True)
    .Visible = True
With .Controls
    With .Add(Type:=msoControlPopup)
        .Caption = "&Файл"
        With .Controls
        With .Add(Type:=msoControlButton, ID:=23, Before:=1)
            .Caption = "Открыть"
        End With
        With .Add(Type:=msoControlButton, ID:=106, Before:=1)
        .Caption = "Закрыть"
        End With
        With .Add(Type:=msoControlButton, ID:=748, Before:=1)
        .Caption = "Сохранить как"
        End With
    End With
End With
End With
End With
 
End Sub
Даже ещё проще:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Макрос1()
With Application.CommandBars.Add(Name:="Меню", _
        MenuBar:=True, Temporary:=True)
    .Visible = True
With .Controls
    With .Add(Type:=msoControlPopup)
        .Caption = "&Файл"
        With .Controls
         .Add Type:=msoControlButton, ID:=23, Before:=1
         .Add Type:=msoControlButton, ID:=106, Before:=1
         .Add Type:=msoControlButton, ID:=748, Before:=1
        End With
    End With
End With
End With
End Sub
1
Dion-one
1 / 1 / 0
Регистрация: 09.06.2010
Сообщений: 11
31.10.2010, 12:42  [ТС] 13
А где можна найти список ID ? И Before:=1 что такое?)))

Добавлено через 11 минут
Цитата Сообщение от Alex77755 Посмотреть сообщение
А ID Нашёл какие тебе нужны?
Мне кажеться буду использовать практически все =) Поэтому лучше список бы
0
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
31.10.2010, 13:13 14
Поэтому лучше список бы
Ты считаешь допустимым публиковатьздесь список в 1500 строк?
Вот некоторые. Да, кстати, и в справке тоже много инфы имеется

Стандартная 3
Созд&ать 2520
Открыть 23
&Сохранить 3
Разрешение (Неограниченный доступ) 9004
&Сообщение 3738
Печать (Canon LBP2900) 2521
Пред&варительный просмотр 109
&Орфография... 2
Справочн&ые материалы... 7343
&Вырезать 21
&Копировать 19
Вст&авить 6002
&Формат по образцу 108
&Отменить 128
Верну&ть 129
&Рукописные примечания 9071
Гип&ерссылка... 1576
&Автосумма 226
Сортировка по во&зрастанию 210
Сортировка по у&быванию 211
Мастер диа&грамм 436
&Рисование 204
Мас&штаб: 1733
&Справка: Microsoft Excel 984
1
Dion-one
1 / 1 / 0
Регистрация: 09.06.2010
Сообщений: 11
31.10.2010, 13:20  [ТС] 15
Ну можно в архив текстовый и архив)))
Пасиба больщое =)
А разрывную линию как вставить?
0
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
31.10.2010, 14:55 16
Мне кажеться буду использовать практически все

Зачем менять всё на своё, составленное из стадартных.....
Запусти макрос - на листе будет список:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit
Public Sub IDDD()
Dim Q As CommandBar
Dim M As Object
Dim A As Application
Dim R
 
Set A = Application
For Each Q In A.CommandBars
R = R + 2
    Cells(R, 1) = "Надпись "
      Cells(R, 2) = Q.NameLocal
        Cells(R, 3) = "Индекс"
         Cells(R, 4) = Q.Index
    For Each M In Q.Controls
  R = R + 1
    Cells(R, 1) = "Надпись "
      Cells(R, 2) = M.Caption
        Cells(R, 3) = "ID"
         Cells(R, 4) = M.ID
    Next
Next
End Sub
Добавлено через 20 минут
Dion-one
Ты будешь удивлён, но есть такая штучка Гугл. И там всё есть.
Мне понадобилось 20 с что бы найти ответ.
Боше на вопросы без кода не отвечаю:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Макрос1()
With Application.CommandBars.Add(Name:="Меню", _
        MenuBar:=True, Temporary:=True)
    .Visible = True
With .Controls
    With .Add(Type:=msoControlPopup)
        .Caption = "&Файл"
        With .Controls
         .Add Type:=msoControlButton, ID:=23, Before:=1
                With .Add(Type:=msoControlButton, ID:=748, Before:=1)
                  .BeginGroup = True
                End With
         .Add Type:=msoControlButton, ID:=106, Before:=1
       End With
    End With
End With
End With
End Sub
Добавлено через 11 минут
Не понял пока зачем это Бефоря, но без него разделители получаются лучше:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Макрос1()
With Application.CommandBars.Add(Name:="Меню", _
        MenuBar:=True, Temporary:=True)
    .Visible = True
    With .Controls
        With .Add(Type:=msoControlPopup)
            .Caption = "&Файл"
            With .Controls
             .Add Type:=msoControlButton, ID:=23
            With .Add(Type:=msoControlButton, ID:=748)
              .BeginGroup = True
            End With
            With .Add(Type:=msoControlButton, ID:=106)
              .BeginGroup = True
            End With
          End With
       End With
    End With
End With
End Sub
1
31.10.2010, 14:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2010, 14:55

Разработка игры. Крестики нолики
Не понимаю в чем дело. Ругается на End if в проверке. А пока запускалась...

Разработка приложения пользователя в MS Excel
Вот само задание: Вот сделанные таблицы: Помогите с остальным,пожалуйста.

Разработка пользовательских диалоговых окон
9ое задание


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru