重新排列自定义按钮

时间:2016-07-28 08:17:46

标签: excel excel-vba ribbon ribbonx vba

我是编程新手,但我尝试使用Excel色带进行实验。我正在使用自定义UI编辑器。我想使用insertBefore和insertAfter控件来重新排列我的自定义按钮。如果我没有在按钮级别使用唯一的命名空间和insertAfterQ / insertBeforeQ按钮的顺序不会改变,但是,如果我使用它我无法看到相关的宏(可能是由于我的命名空间),因此onAction将不会做任何事情单击按钮。我尝试了各种idQ组合,但我不能让它工作。下面的示例只是正确执行按钮2,它不在我指定的命名空间中。 一个简单的例子:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="MyNameSpace">
    <ribbon>
        <tabs>
            <tab idQ="x:customTab" label="My Order Form" insertAfterMso="TabHome">
                <group idQ="x:customGroup" label="My Order Form Tools">
                    <button idQ="x:customButton1" label="Clear" size="large" onAction="DeleteOrder" image="deleteorder" />
                    <button id="customButton2" label="Print" size="large" onAction="ResetOrder" image="resetorder" />
                    <button idQ="x:customButton3" label="Home" size="large" onAction="NewOrder" insertBeforeQ="x:customButton1" image="neworder" />
                </group>                
            </tab>
        </tabs>
    </ribbon>
</customUI>

有没有办法让命名空间中的onAction工作?或者还有其他方法吗?非常感谢,TS

1 个答案:

答案 0 :(得分:0)

你真的需要命名空间吗?

如果要重新排列自己的控件,只需在xml:

中切换位置即可
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <tabs>
            <tab id="customTab" label="My Order Form" insertAfterMso="TabHome">
                <group id="customGroup" label="My Order Form Tools">
                    <button id="customButton3" label="Home" size="large" onAction="NewOrder" image="neworder" />
                    <button id="customButton1" label="Clear" size="large" onAction="DeleteOrder" image="deleteorder" />
                    <button id="customButton2" label="Print" size="large" onAction="ResetOrder" image="resetorder" />
                </group>                
            </tab>
        </tabs>
    </ribbon>
</customUI>

如果您想将控件相对于内置控件放置,请使用insertBeforeMsoinsertAfterMso,就像在"customTab"中一样。据我所知,如果将来自customUI-xml的控件组合到不同的文件中,则只需要使用命名空间和idQ-id。