Страницы: 1
RSS
Изменения значка на кнопке панели после выполнения макроса, При нажатии своей кнопки на панели меняется значок
 
Здравствуйте.
Нашел на просторах макрос создания примечания исходя из данных введенных в ячейку.
Теперь возникла необходимость включение/отключение этого макроса, реализовал это через функцию If.
Задумал сделать смену значка на кнопке, почти все получилось, но когда выполняю команду кнопкой с
панели, панель пересоздается и добавляется еще один значок со смещением, если
выполнить макрос из VBA или из окна выполнения макроса все нормально панель перерисовывается правильно.
Помогите пожалуйста побороть эту проблему, если это возможно, или может есть другой подход к реализации этой задачи.
 
Не разбираюсь в настройке пользовательского интерфейса и не понял зачем Вы каждый раз полностью перерисовываете всю панель, а не исправляете конкретную кнопку (не знаю как), но в рамках имеющегося кода предлагаю следующий вариант:
Код
Function GetCommandBar(ByVal CommandBarName As String, Optional ByVal Clean As Boolean = False, _
                       Optional ByVal Position As MsoBarPosition = msoBarFloating) As CommandBar
    On Error Resume Next: Err.Clear
    ' получаем ссылку на пользовательскую панель инструментов

    If Clean Then    ' если нужно - пересоздаём панель
        Application.CommandBars(CommandBarName).Delete
        Set GetCommandBar = Application.CommandBars.Add(CommandBarName, Position, False, True)
    Else
        Set GetCommandBar = Application.CommandBars(CommandBarName)
        If Err.Number Then Set GetCommandBar = Application.CommandBars.Add(CommandBarName, Position, False, True)
    End If

    GetCommandBar.Visible = True    ' отображаем панель инструментов
End Function

В этом варианте вместо удаления всех кнопок по очереди просто пересоздаётся вся панель.
Я не волшебник, я только учусь.
 
Я тоже не знаю как исправить конкретную кнопку, я просто взял созданный макрос и в нем разобрался как создавать кнопки и назначать на них макрос и применил для своих нужд.
Вот так и Ваш вариант мне подходит.
Спасибо.
Страницы: 1
Наверх