Проблема добавления динамических элементов в ComboBox ленты через обратные вызовы - PullRequest
0 голосов
/ 16 мая 2019

Я использую версию 1904 Excel (последний ежемесячный выпуск Office 365).

Я пытаюсь добавить пользовательский ComboBox на ленту со списком, который может измениться во время выполнения.

Два обратных вызова никогда не вызывают, независимо от того, что я делаю: getItemLabel и getItemID.ComboBox, таким образом, никогда не заполняется никакими данными.Другие 2 Обратных вызова вызываются как ожидается, getItemCount и onChange.

Я бы подумал, что 2 неработающие обратные вызовы будут запущены сразу после getItemCount, но я могу видеть только то, что код проходит getItemCount, когда я отлаживаю, куда идет код.

Ниже приведен фрагмент моего XML-файла, который я добавляю в свой лист Excel с помощью бесплатного Редактора пользовательского интерфейса для Microsoft Office :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="rxIRibbonUI_onLoad">
    <ribbon>
        <tabs>
            <tab id="xlSherlockTab" label="Share  Register" keytip="K" insertBeforeMso="TabHome">
                <group id="customGroupSettings" label="Settings">
                    <comboBox id="cboSearchIssuer" label="Issuer" getItemCount="RibbonUI.SearchIssuer_getItemCount" getItemID="RibbonUI.SearchIssuer_getItemId" getItemLabel="RibbonUI.SearchIssuer_getItemLabel" onChange="RibbonUI.SearchIssuer_Click"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

Экстракт соответствующегочасть кода VBA, размещенная в стандартном модуле под названием RibbonUI:

'Callback for customUI.onLoad
Sub rxIRibbonUI_onLoad(ribbon As IRibbonUI)
   MsgBox "ribbon_onLoad"
   RibbonManager.SetRibbon ribbonParameter:=ribbon
   ribbon.InvalidateControl ("cboSearchIssuer")
End Sub

''''''''''''''''''''
''rxcboSearchIssuer
''''''''''''''''''''

'Callback for rxcboSearchIssuer onChange
Sub SearchIssuer_Click(control As IRibbonControl, text As String)
    MsgBox text
    RibbonManager.GetRibbon().InvalidateControl ("cboSearchIssuer")
End Sub

'Callback for rxcboSearchIssuer getItemCount
Sub SearchIssuer_getItemCount(control As IRibbonControl, ByRef returnedVal)
    MsgBox DASHBOARD.ListObjects(1).ListRows.Count
    MsgBox control.id
    returendVal = DASHBOARD.ListObjects(1).ListRows.Count
End Sub


''NOT BEING CALLED FROM HERE ONWARDS....

'Callback for rxcboSearchIssuer getItemLabel
Sub SearchIssuer_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
    returnedVal = "Harry: " & CStr(index) 'DASHBOARD.ListObjects(1).ListRows(index).Range(1, 3)
End Sub

Sub SearchIssuer_getItemID(control As IRibbonControl, index As Integer, ByRef id)
    id = "cbo" & CStr(index)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...