2014-02-10 74 views
2

配置我的功能区时出现问题。
1.只有宏被用作onAction或getPressed属性。标准模块中的功能不起作用。用标准模块编写的回调函数也不起作用。
2.如何在VBA函数中使用编辑框的值?访问功能区项目执行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="Поиск по рег№" 
          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 

回答

2

您可能需要告诉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编辑窗口)

我从来没有把回调到一个标准模块中,但因为你是这样做也许你需要在XML中有类似onAction="MyModuleName.Pplopenmacro"的东西?

+1

请不要使用俄语,即使是来自代码片段的标签 –