3

我在配置功能区时遇到了一些问题。

  1. 只有宏作为onActiongetPressed属性工作。标准模块中的功能不起作用。用标准模块编写的回调也不起作用。
  2. 如何在 VBA 函数中使用编辑框的值?

这是我的功能区的 xml,例如:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="true">
        <tabs>
            <tab idMso="TabHome">
                <group idMso="GroupFont" visible="false" />
            </tab>
            <tab id="CustomTab" label="Клиенты">
                <group id="PeopleGroup" label="Люди">
                    <toggleButton id="ToggleButton1" size="large" label="Все люди"
                      onAction="Pplopenmacro" imageMso="ContactPictureMenu"/>
                    <editBox id="PeopleEditBox"
                             label="Поиск по рег№&quot; 
                             onChange="MyEditBoxCallbackOnChange" />
                    <button id="Button3" label="TEST"
                      size="normal" onAction="=Person_choose()"  />
                </group>
                <group id="CompaniesGroup" label="Компании">
                    <toggleButton id="ToggleButton2" size="large"
                      label="Компании"
                      onAction="Cmpnopenmacro" imageMso="MeetingsWorkspace" />
                </group>
            </tab>
            <tab id="CustomTab2" label="Документы">
                <group id="MyGroup" label="Документы" >
                    <button id="Button1" label="Счета"
                      size="large" onAction="Invoiceopenmacro"
                      imageMso="BusinessFormWizard" />
                    <button id="Button2" label="Хуета" size="normal" />
                </group >
            </tab>
        </tabs>
    </ribbon>
</customUI>

这些是我在 std 模块中的功能:

Public Sub MyEditBoxCallbackgetText(control As IRibbonControl, ByRef strText)
    ' Callback EditBox

    '  Select Case control.Id
    '      Case "PeopleEditBox"
    '          strText = "Hello World"
    '  End Select

    MsgBox "1"
End Sub

Public Sub MyEditBoxCallbackOnChange(control As IRibbonControl, strText As String)
    ' Callback Editbox: Returnvalue Editbox

    '  Select Case control.Id
    '      Case "PeopleEditBox"
    '              MsgBox "Value Editbox: " & _
    '              strText, vbInformation, "Sample EditBox"
    '  End Select

    MsgBox "2"
End Sub

Public Sub Person_choose()
    'DoCmd.openForm "People", acNormal
     MsgBox "Yahoo!"
End Sub
4

1 回答 1

3

您可能需要告诉 XML 在哪里可以找到该过程。例子 -

<group id="PeopleGroup" label="People">
    <toggleButton id="ToggleButton1" size="large"
      label="All People"
      onAction="ThisWorkbook.Pplopenmacro" imageMso="ContactPictureMenu"/>
    <editBox id="PeopleEditBox"
             label="Search by Region #" 
             onChange="ThisWorkbook.MyEditBoxCallbackOnChange" />
    <button id="Button3" label="TEST"
      size="normal" onAction="ThisWorkbook.Person_choose()"  />
</group>

ThisWorkbook.表示在ThisWorkbook对象中找到过程(在 VBA 编辑窗口中查看您的项目资源管理器)

我从来没有将回调放入标准模块中,但是既然你这样做了,也许你需要onAction="MyModuleName.Pplopenmacro"在 XML 中有类似的东西?

于 2014-04-06T05:19:11.557 回答