功能区控件不会失效或刷新 [英] Ribbon Control not invalidating or refreshing

查看:51
本文介绍了功能区控件不会失效或刷新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,


我正在使用Word 2016/365& 。VBA 我在Word中创建了一个功能区,我的控件(下拉列表)在使用后没有失效(刷新)。 下拉菜单只是为了在段落上方或下方添加点数。   如果我在段落上方选择24pts
,它第一次工作,但下拉列表不刷新(保持在24pts ) 如果我在另一段上使用宏并再次重新选择24pts,则没有任何反应。 如果我选择了另一个点(36分),那么它可以正常工作。 
我在论坛的各个地方搜索过并尝试过以下所有内容的代码:


XML:


------ -----------------


<?xml version =" 1.0"编码= QUOT; UTF-8英寸standalone =" yes"?>

< customUI xmlns =" http //schemas.microsoft.com/office/2009/07/customui" onLoad =" RibbonControl.Onload">

  < ribbon>

    < tabs>

      < tab id =" CustomTab1" insertBeforeMso = QUOT; TabHome"标签= QUOT; QUARK" >

        < group id =" grpSpacing" label =" SPACING">

  < dropDown id =" DDSpacing"标签= QUOT;以上" imageMso = QUOT; ShapeUpArrow"


                    &NBSP;&NBSP; getItemCount =" RibbonControl.GetDDAboveCount"

                  &NBSP;&NBSP;&NBSP;&NBSP; getItemLabel =" RibbonControl.GetDDAboveLabel"&
                  &NBSP;&NBSP;&NBSP;&NBSP; getSelectedItemIndex =" RibbonControl.GetSelectedItemDDAboveIndex"

                  &NBSP;&NBSP;&NBSP;&NBSP;的OnAction = QUOT; RibbonControl.myDDAbove" />
$
  < dropDown id =" DDSpacingBelow"标签= QUOT;后" imageMso = QUOT; ShapeDownArrow"


                    &NBSP;&NBSP; getItemCount =" RibbonControl.GetDDBelowCount"

                  &NBSP;&NBSP;&NBSP;&NBSP; getItemLabel =" RibbonControl.GetDDBelowLabel" b $ b                  &NBSP;&NBSP;&NBSP;&NBSP; getSelectedItemIndex =" RibbonControl.GetSelectedItemDDBelowIndex"

                  &NBSP;&NBSP;&NBSP;&NBSP;的OnAction = QUOT; RibbonControl.myDDBelow" />
$
 < / group>

      < / tab>

    < / tabs>

  < / ribbon>

< / customUI>


--------------------- -------------


VB:


选项显式

公共myRibbon As IRibbonUI

Sub Onload(Ribbon As IRibbonUI)

 

 设置myRibbon =功能区


结束次级

次级GetDDAboveCount(ByVal控制为IRibbonControl,ByRef计数)

 

  count = 9


End Sub

Sub GetDDAboveLabel(ByVal control As IRibbonControl,Index As Integer,ByRef label)

   ;

  label =选择(索引+ 1,"选择...","0","6","12","24","36","48","60" ;,"72")


结束子

Sub GetSelectedItemDDAboveIndex(ByVal control As IRibbonControl,ByRef Index)


&NBSP;选择案例控制.ID

    Case Is =" Select ..."

     指数= 0

    Case Else

      '什么都不做 -
 结束选择


结束子

子myDDAbove(ByVal控制为IRibbonControl,selectedID为String,selectedIndex为整数)

 

  Select Case selectedIndex

   案例0

      '什么都不做$
   案例1

      modUtilities.para0pts

   案例2

      modUtilities.para6pts

   案例3

      modUtilities.para12pts

   案例4

      modUtilities.Para24Pts

   案例5

      modUtilities.para36pts

   案例6

      modUtilities.para48pts

   案例7

      modUtilities.para60pts

   案例8

      modUtilities.para72pts

 结束选择

 

  myRibbon.InvalidateControl control.ID


End Sub

Sub GetDDBelowCount(ByVal control As IRibbonControl,ByRef count)

 

  count = 5


End Sub

Sub GetDDBelowLabel(ByVal control As IRibbonControl,Index As Integer,ByRef label)

   ;&NBSP;&NBSP;

  label =选择(索引+ 1,"选择...","0","12","24","36")


结束次级

Sub GetSelectedItemDDBelowIndex(ByVal control As IRibbonControl,ByRef Index)

 

 选择案例控制.ID

    Case Is =" Select ..."

     指数= 0

    Case Else

      '什么都不做 -
 结束选择


结束子

子myDDBelow(ByVal控制为IRibbonControl,selectedID为String,selectedIndex为Integer)

 

  Select Case selectedIndex

   案例0

      '什么都不做$
   案例1

      modUtilities.para0ptsAfter
   案例2

      modUtilities.para12ptsA
   案例3

      modUtilities.para24ptsA
   案例4

      modUtilities.para36pts后
 结束选择


  myRibbon.InvalidateControl control.ID


End Sub


-------------------- -------------------


我很感激任何帮助。 谢谢Kyle



解决方案


你能告诉我如何使用这个功能吗?


什么是"modUtilities"?我应该怎么声明它?


我会得到编译错误,显示modUtilities没有定义变量。


Hello,

I'm using Word 2016/365 & VBA.  I've created a ribbon in Word and my controls (dropdown) are not invalidating (refreshing) after I use them.  The drop-down is just to add points above or below a paragraph.   If I choose 24pts above the paragraph it works the first time, but the drop-down does not refresh (remains at 24pts) and if I use the macro on another paragraph and reselect 24pts again nothing happens.  If I select a different point (36pts) then it works.  I've searched everywhere in forums and have tried everything below is the code:

XML:

-----------------------

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http //schemas.microsoft.com/office/2009/07/customui" onLoad="RibbonControl.Onload">
  <ribbon>
    <tabs>
      <tab id="CustomTab1" insertBeforeMso="TabHome" label="QUARK" >
        <group id="grpSpacing" label="SPACING">
  <dropDown id="DDSpacing" label="Above" imageMso="ShapeUpArrow"
                      getItemCount="RibbonControl.GetDDAboveCount"
                      getItemLabel="RibbonControl.GetDDAboveLabel"
                      getSelectedItemIndex="RibbonControl.GetSelectedItemDDAboveIndex"
                      onAction="RibbonControl.myDDAbove" />
  <dropDown id="DDSpacingBelow" label="After" imageMso="ShapeDownArrow"
                      getItemCount="RibbonControl.GetDDBelowCount"
                      getItemLabel="RibbonControl.GetDDBelowLabel"
                      getSelectedItemIndex="RibbonControl.GetSelectedItemDDBelowIndex"
                      onAction="RibbonControl.myDDBelow" />
 </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

----------------------------------

VB:

Option Explicit
Public myRibbon As IRibbonUI
Sub Onload(ribbon As IRibbonUI)
 
  Set myRibbon = ribbon

End Sub
Sub GetDDAboveCount(ByVal control As IRibbonControl, ByRef count)
 
  count = 9

End Sub
Sub GetDDAboveLabel(ByVal control As IRibbonControl, Index As Integer, ByRef label)
  
  label = Choose(Index + 1, "Select...", "0", "6", "12", "24", "36", "48", "60", "72")

End Sub
Sub GetSelectedItemDDAboveIndex(ByVal control As IRibbonControl, ByRef Index)

  Select Case control.ID
    Case Is = "Select..."
      Index = 0
    Case Else
      'Do nothing
  End Select

End Sub
Sub myDDAbove(ByVal control As IRibbonControl, selectedID As String, selectedIndex As Integer)
 
  Select Case selectedIndex
    Case 0
      'Do nothing
    Case 1
      modUtilities.para0pts
    Case 2
      modUtilities.para6pts
    Case 3
      modUtilities.para12pts
    Case 4
      modUtilities.Para24Pts
    Case 5
      modUtilities.para36pts
    Case 6
      modUtilities.para48pts
    Case 7
      modUtilities.para60pts
    Case 8
      modUtilities.para72pts
  End Select
 
  myRibbon.InvalidateControl control.ID

End Sub
Sub GetDDBelowCount(ByVal control As IRibbonControl, ByRef count)
 
  count = 5

End Sub
Sub GetDDBelowLabel(ByVal control As IRibbonControl, Index As Integer, ByRef label)
    
  label = Choose(Index + 1, "Select...", "0", "12", "24", "36")

End Sub
Sub GetSelectedItemDDBelowIndex(ByVal control As IRibbonControl, ByRef Index)
 
  Select Case control.ID
    Case Is = "Select..."
      Index = 0
    Case Else
      'Do nothing
  End Select

End Sub
Sub myDDBelow(ByVal control As IRibbonControl, selectedID As String, selectedIndex As Integer)
 
  Select Case selectedIndex
    Case 0
      'Do nothing
    Case 1
      modUtilities.para0ptsAfter
    Case 2
      modUtilities.para12ptsAfter
    Case 3
      modUtilities.para24ptsAfter
    Case 4
      modUtilities.para36ptsAfter
  End Select

  myRibbon.InvalidateControl control.ID

End Sub

---------------------------------------

I'd appreciate any help.  Thank you, Kyle

解决方案

Hi,

Could you please tell me how to use the function?

What is "modUtilities"? How should I declare it?

I would get compile error shows variable not defined at modUtilities.


这篇关于功能区控件不会失效或刷新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆