Как исключить дублирование CommandBar

Программирование на Visual Basic for Applications
Ig
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 30.04.2005 (Сб) 12:37
Откуда: Far East

Как исключить дублирование CommandBar

Сообщение Ig » 14.06.2005 (Вт) 5:14

Здравствуйте.

Условие: Имеем две идентичные Экселевские "книги". Если их открывать поотдельности, то каждая из них создает одну и ту же, удаляемую при закрытии, CommandBar - "MyCrazyBar", - с парой кнопок.
Вопрос: Как "сказать" второй "книге", открываемой после первой, уже открытой, что повторно создавать панель не нужно? Без привязки к именам этих "книг".
Код типа:

Код: Выделить всё
If Application.CommandBars("MyCrazyBar").Visible = False Then
Set MyMainBar = Application.CommandBars.Add(Name:="MyCrazyBar", _
               Position:=msoBarTop, MenuBar:=False, _
               Temporary:=True)
With MyMainBar
  .Visible = True
  .Protection = msoBarNoChangeVisible + msoBarNoCustomize _
                + msoBarNoMove
' Создаем кнопки
   Set CmdBttn1 =  .Controls.Add(Type:=msoControlButton, ID:=1, _
                    Temporary:=True)
   Set CmdBttn2 =  .Controls.Add(Type:=msoControlButton, ID:=1, _
                    Temporary:=True)
End With
End If
...

вызывает ошибку. 8)
"Нормальные герои всегда идут в обход..."

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 14.06.2005 (Вт) 8:04

Ну а что, просто перебрать все бары и посмотреть нет ли уже такого имени, это не судьба? :)

Ig
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 30.04.2005 (Сб) 12:37
Откуда: Far East

Сообщение Ig » 14.06.2005 (Вт) 11:42

Ух, шайтан. :shock:
Действительно, конструкция типа:

Код: Выделить всё
  For Each MyMainBar In Application.CommandBars
   If MyMainBar.Name = "MyCrazyBar" Then
    blnMyCB = True
   Else
    blnMyCB = False
   End If
  Next


Работает! Тем более странно, что этот вариант я уже пробовал, но тогда у меня ничего не получилось. :shock:
"Нормальные герои всегда идут в обход..."


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

    TopList