Страницы: 1
RSS
Помощь по XML. Как сделать фиксирующую кнопку (toggleButton) на ленте динамической?
 
Добрый день, уважаемые знатоки. Вопрос по работе с фиксирующей кнопкой на ленте, может кто-то подскажет.
Формирую для надстройки на ленте фиксирующую кнопку, например, стандартную функцию выделение шрифта жирным.

В xml схеме прописываю:
Код
<toggleButton id="m111" getPressed="Mac_BoldGetPR" onAction="Mac_Bold"/>
                   
В макросах прописываю:
Код
Sub Mac_Bold (control As IRibbonControl, ByRef Pressed) 'непосредственно макрос
   Selection.Font.Bold = Not Selection.Font.Bold
End Sub

Sub Mac_BoldGetPR(control As IRibbonControl, ByRef Pressed) 'макрос на свойство GetPressed
    Pressed = Selection.Font.Bold
End Sub

Все работает, кнопка фиксируется, макрос запускается. Внимание вопрос - как сделать так, чтобы кнопка обновлялась при обновлении листа. Например, чтобы при выделении ячейки с жирным шрифтом, кнопка была бы нажата, а при выделении ячейки без жирного шрифта - отжималась и т.д. Вобщем так, как это происходит со стандартными фиксирующими кнопками на Главной вкладке.
При моем коде кнопка всегда остается в одном положении.

В приложении пример надстройки с данной командой.

Заранее спасибо.
Изменено: Rigel44 - 22.06.2017 00:11:04
 
так?
xml:
Код
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="BoldLoad">
   <ribbon startFromScratch="false">
      <tabs>
         <tab id="Bold" label="Bold">
            <group id="Bold2" label="Bold">
               <toggleButton id="d111" imageMso="A" getPressed="Mac_BoldGetPR" onAction="Mac_Bold" />
            </group>
         </tab>
      </tabs>
   </ribbon>
</customUI>
vba:
Код
Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    g_objRibbon.InvalidateControl "d111"
End Sub
Код
Public g_objRibbon As IRibbonUI

Public Sub BoldLoad(Ribbon As IRibbonUI)
    Set g_objRibbon = Ribbon
End Sub

Sub Mac_Bold(control As IRibbonControl, ByRef Pressed)  'непосредственно макрос
   Selection.Font.Bold = Not Selection.Font.Bold
End Sub
 
Sub Mac_BoldGetPR(control As IRibbonControl, ByRef Pressed) 'макрос на свойство GetPressed
    Pressed = Selection.Font.Bold
End Sub
 
Да, супер!!! Большое спасибо за помощь
 
Добрый день.
При открытии файла появляется теперь токая проблема, может знаете как её устранить. Спасибо.  
 
Всё, удалил в книге макрос который обновляет сводную таблицу на одном листе при открытии файла. Впринципе на работоспособность в целом не повлияло.  
Страницы: 1
Наверх