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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 11:34   #1
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию Панель инструментов VBA

Здравствуйте, помогите пожалуйста мне разобраться с интерфейсом моей панели инструментов! Сейчас она выглядит так:Панель инстументов.JPG
А хотелось бы, чтобы Скрыть\Отобразить было в первом столбце, Добавить во втором, а Сортировка и Фильтрация в третьем!
Может быть есть какое нибудь свойство, для того чтобы изменить позицию, но я об этом не знаю!
Вот мой код:
Код:
Set WorksheetsMenuBar = CommandBars.ActiveMenuBar
'Меню "Скрытие"
Set Skrutie = WorksheetsMenuBar.Controls.Add(Type:=msoControlButton)
Skrutie.Parameter
Skrutie.Caption = "&Скрыть/отобразить"
Skrutie.TooltipText = "Скрыть/отобразить"
Skrutie.Style = msoButtonCaption
Skrutie.OnAction = "Skruties"
' Меню "Добавить"
Set Dobavit = WorksheetsMenuBar.Controls.Add(Type:=msoControlPopup)
 With Dobavit
 .Caption = "&Добавить"
End With
' Команда "нагрузка" меню "Добавить"
Set Nagruz = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
With Nagruz
.Caption = "&Нагрузка"
.TooltipText = "Нагрузка"
.OnAction = "DobavitNagruz"
End With
' Команда "Комиссия" меню "Добавить"
Set Komissia = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
With Komissia
.Caption = "&Комиссия"
.TooltipText = "Комиссия"
.OnAction = "DobavitKomissia"
End With
' Команда "Специальность" меню "Добавить"
Set Spec = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
With Spec
.Caption = "&Специальность"
.TooltipText = "Специальность"
.OnAction = "DobavitSpec"
End With
' Команда "Преподаватель" меню "Добавить"
Set Prepod = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
With Prepod
.Caption = "&Преподаватель"
.TooltipText = "Преподаватель"
.OnAction = "DobavitPrepod"
End With
' Команда "Группа" меню "Добавить"
Set Gruppa = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
With Gruppa
.Caption = "&Группа"
.TooltipText = "Группа"
.OnAction = "DobavitGruppa"
End With
' Команда "Дисциплина" меню "Добавить"
Set Disciplina = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
With Disciplina
.Caption = "&Дисциплина"
.TooltipText = "Дисциплина"
.OnAction = "DobavitDisciplina"
End With
' Команда "Кабинет/Лабаротория" меню "Добавить"
Set Kabinet = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
With Kabinet
.Caption = "&Кабинет\Лабаротория"
.TooltipText = "Кабинет\Лабаротория"
.OnAction = "DobavitKabinet"
End With
' Меню "Сортировка"
Set Sort = WorksheetsMenuBar.Controls.Add(Type:=msoControlPopup)
 With Sort
 .Caption = "&Сортировка"
End With
' Команда "Преподаватели" меню "Сортировка"
Set SortPrepods = Sort.CommandBar.Controls.Add(Type:=msoControlButton)
With SortPrepods
.Caption = "&Преподаватели"
.TooltipText = "Преподаватели"
.OnAction = "SortPrepod"
End With
' Команда "Группы" меню "Сортировка"
Set SortGruppa = Sort.CommandBar.Controls.Add(Type:=msoControlButton)
With SortGruppa
.Caption = "&Группы"
.TooltipText = "Группы"
.OnAction = "SortGrupp"
End With
' Команда "Дисциплины" меню "Сортировка"
Set SortDisciplina = Sort.CommandBar.Controls.Add(Type:=msoControlButton)
With SortDisciplina
.Caption = "&Дисциплины"
.TooltipText = "Дисциплины"
.OnAction = "SortDisciplin"
End With
' Команда "Кабинет\Лаборатория" меню "Сортировка"
Set SortKabinet = Sort.CommandBar.Controls.Add(Type:=msoControlButton)
With SortKabinet
.Caption = "&Кабинет\Лаборатория"
.TooltipText = "Кабинет\Лаборатория"
.OnAction = "SortKabinets"
End With
' Меню "Фильтрация"
Set Filtr = WorksheetsMenuBar.Controls.Add(Type:=msoControlPopup)
 With Filtr
 .Caption = "&Фильтрация"
End With
' Команда "Преподаватели" меню "Фильтрация"
Set FiltrPrepods = Filtr.CommandBar.Controls.Add(Type:=msoControlButton)
With FiltrPrepods
.Caption = "&Преподаватели"
.TooltipText = "Преподаватели"
.OnAction = "FiltrPrepod"
End With
' Команда "Группы" меню "Фильтрация"
Set FiltrGrups = Filtr.CommandBar.Controls.Add(Type:=msoControlButton)
With FiltrGrups
.Caption = "&Группы"
.TooltipText = "Группы"
.OnAction = "FiltrGrup"
End With
' Команда "Дисциплины" меню "Фильтрация"
Set FiltrDisciplins = Filtr.CommandBar.Controls.Add(Type:=msoControlButton)
With FiltrDisciplins
.Caption = "&Дисциплины"
.TooltipText = "Дисциплины"
.OnAction = "FiltrDisciplin"
End With
' Команда "Кабинеты\Лаборатории" меню "Фильтрация"
Set FiltrKabinets = Filtr.CommandBar.Controls.Add(Type:=msoControlButton)
With FiltrKabinets
.Caption = "&Кабинеты\Лаборатории"
.TooltipText = "Кабинеты\Лаборатории"
.OnAction = "FiltrKabinet"
End With
End If
End Sub

Private Sub Auto_close()
If MenuExists = True Then  ' если меню существует, то закрываем его
WorksheetsMenuBar.Reset
End If
End Sub
Помогите пожалуйста, чем сможете!
Lyubov1990 вне форума Ответить с цитированием
Старый 03.06.2009, 20:05   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Ну вы, девушка, даете. Вы добавляете на ленту контролы через CommandBar?
У вас какой офис? Судя по скрину, 2007. Но там нельзя через VBA добавлять кнопки на ленту! Пока, по крайней мере.

Ваш код мне не удалось заставить работать
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 03.06.2009, 20:43   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
У вас какой офис? Судя по скрину, 2007. Но там нельзя через VBA добавлять кнопки на ленту!
Ну как сказать...
У меня есть надстройка для Excel 2003, которая формирует меню через CommandBar.

Я как-то запускал её на Excel 2007 - и моё меню отобразилось где-то на вкладке Разработчик
Ничего такого особенного в код я не добавлял.
EducatedFool вне форума Ответить с цитированием
Старый 04.06.2009, 00:32   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Очень может быть. В Word есть «Настраиваимая панель инструментов», в которую помещаются кнопки со старых версий меню. Но почему тогда не работает предложенный код?
Код:
Set WorksheetsMenuBar = CommandBars.ActiveMenuBar
говорит, что нет такого объекта
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 04.06.2009, 09:46   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ну так зачем использовать свойство ActiveMenuBar...

Если написать так, то всё будет работать: Set WorksheetsMenuBar = CommandBars(1)

В таком виде код у меня работает:
Код:
Sub test()
    On Error Resume Next
    CommandBars(1).Reset: Set WorksheetsMenuBar = CommandBars(1)
    
    Set Skrutie = WorksheetsMenuBar.Controls.Add(Type:=msoControlButton)
        Skrutie.Caption = "&Скрыть/отобразить": Skrutie.TooltipText = "Скрыть/отобразить"
        Skrutie.Style = msoButtonCaption: Skrutie.OnAction = "Skruties"
    
    Set Dobavit = WorksheetsMenuBar.Controls.Add(Type:=msoControlPopup)
        Dobavit.Caption = "&Добавить"
    
    Set Nagruz = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
        With Nagruz
            .Caption = "&Нагрузка": .TooltipText = "Нагрузка": .OnAction = "DobavitNagruz"
        End With
    
    Set Komissia = Dobavit.CommandBar.Controls.Add(Type:=msoControlButton)
        With Komissia
            .Caption = "&Комиссия": .TooltipText = "Комиссия": .OnAction = "DobavitKomissia"
        End With
End Sub
Наверняка и в 2007-м на ленте что-нибудь да нарисуется.
EducatedFool вне форума Ответить с цитированием
Старый 04.06.2009, 09:52   #6
Lyubov1990
Пользователь
 
Аватар для Lyubov1990
 
Регистрация: 06.04.2009
Сообщений: 34
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Но почему тогда не работает предложенный код?
Не работает скорее всего, т.к. код не полностью!
Код:
' Запрет использования недекларированных переменных
Option Explicit
' Объявляем наши переменные
Dim cmdBarCtrl As CommandBarControl
Dim WorksheetsMenuBar As CommandBar     ' Основная панель Excel

Dim Skrutie As CommandBarButton
Dim Sort As CommandBarButton
Dim Dobavit As CommandBarPopup
Dim Filtr As CommandBarPopup

Dim Nagruz As CommandBarButton
Dim Komissia As CommandBarButton
Dim Spec As CommandBarButton
Dim Prepod  As CommandBarButton
Dim Gruppa As CommandBarButton
Dim Disciplina As CommandBarButton
Dim Kabinet As CommandBarButton
Dim FiltrPrepods As CommandBarButton
Dim FiltrGrups As CommandBarButton
Dim FiltrDisciplins As CommandBarButton
Dim FiltrKabinets As CommandBarButton

Dim MenuExists As Boolean                   ' Флаг существования пользовательского меню

' Функция формирования меню при открытии файла'
Private Sub Auto_open()
'проверка существования меню
Set WorksheetsMenuBar = CommandBars.ActiveMenuBar
MenuExists = False
For Each cmdBarCtrl In WorksheetsMenuBar.Controls
If cmdBarCtrl.Caption = "&Скрыть/отобразить" Then
MenuExists = True
Exit For
End If
Next cmdBarCtrl

If Not MenuExists Then ' если меню не существует, то создаем новое
Нужно сначала это написать, а потом уже код который предоставлен выше! У меня все работает!
Lyubov1990 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать панель инструментов LAGOX Общие вопросы Delphi 2 16.03.2009 19:21
Вложенная панель инструментов. haros Microsoft Office Excel 7 16.03.2009 14:38
Как скрыть панель инструментов? Град Microsoft Office Excel 10 22.10.2008 14:41
Пропала панель инструментов delphin100 Операционные системы общие вопросы 2 24.08.2008 13:29
Панель инструментов как в office _victor Компоненты Delphi 0 01.04.2008 07:06