功能区控件不会失效或刷新 [英] Ribbon Control not invalidating or refreshing
问题描述
你好,
我正在使用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屋!