Как установить фокус на поле редактирования в пользовательской ленте интерфейса без отправки ключей в VBA - PullRequest
0 голосов
/ 24 января 2019

У меня есть 9 полей для редактирования, которые должны быть заполнены в определенном порядке, и обычно заполняются последовательно. Однако единственный способ, которым я в настоящее время знаю, как перейти от поля редактирования к полю редактирования, - это либо щелчок мышью, либо команды Send Keys . Использование этого не является эффективным способом перехода от поля редактирования к полю редактирования

Я использую Windows 7 с Excel 2010.

Рабочая книга Excel - .xltm.

Я написал XML, используя Редактор пользовательского интерфейса для Microsoft Office .

Я знаю, как писать функции обратного вызова, и у меня есть несколько рабочих обратных вызовов.

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

Я знаю, что мой код ниже для активации / установки фокуса на следующее поле ввода неверен, если бы это было так, я бы не задавал вопрос.

Пример кода

VBA:

  OC STANDS FOR ON CHANGE
  GT STANDS FOR GET TEXT
  CB STANDS FOR CONTROL BOX
Public Sub VOL1_OC_CB(IRIB As IRibbonControl, ByRef text)
    'CODE TO EDIT WORKSHEET'
    IRibbonControls("VOL1").ACTIVATE
End Sub

Public Sub VOL1_GT_CB(IRIB As IRibbonControl, ByRef text)
    'CODE TO SET EDIT BOX VALUE AT STARTUP'
End Sub

Public Sub VOL2_OC_CB(IRIB As IRibbonControl, ByRef text)
    'CODE TO EDIT WORKSHEET'    
    IRibbonControls("PCNT").ACTIVATE
End Sub

Public Sub VOL2_GT_CB(IRIB As IRibbonControl, ByRef text)
    'CODE TO SET EDIT BOX VALUE AT STARTUP'
End Sub

Public Sub PCT_OC_CB(IRIB As IRibbonControl, ByRef text)
    'CODE TO EDIT WORKSHEET'
    ThisWorkbook.Sheets("MAIN").Activate
End Sub

Public Sub PCT_GT_CB(IRIB As IRibbonControl, ByRef text)
    'CODE TO SET EDIT BOX VALUE AT STARTUP'
End Sub

XML:

    <ribbon>
        <tabs>
            <tab id="OBR" label="OBR" keytip="CD">
                <group id="MOQS" label="MOQs">
                    <editBox id="VOL1" label="VOL 1"
                        getText="VOL1_GT_CB" onChange="VOL1_OC_CB" keytip="V1"/>
                    <editBox id="VOL2" label="VOL 2"
                        getText="VOL2_GT_CB" onChange="VOL2_OC_CB" keytip="V2"/>
                </group>
                <group id="val" label="values">
                    <editBox id="PCNT" label="INCREASE  %"
                        getText="PCT_GT_CB" onChange="PCT_OC_CB" keytip="PCT"/>
                </group>
            </tab>
        </tabs>
    </ribbon>

Я ожидаю, что при изменении окна редактирования VOL1 этот ящик редактирования VOL2 получит фокус / активацию, но когда я изменяю VOL1 , он активирует лист вместо .

Кроме того, я прошу прощения, если мое форматирование и фразы неудобны, я не очень хорош в общении и склонен делать странные выборы в языке. То же самое касается способа, которым я называю функции и переменные.

...