gpt4 book ai didi

vba - 从另一个控件的回调更新 iRibbon 控件的内容

转载 作者:行者123 更新时间:2023-12-02 11:50:58 25 4
gpt4 key购买 nike

回到 VBA 的旧时代,我们曾经能够通过名称直接访问表单上的控件。我对如何在 VBA 2010 中执行此操作感到有点困惑(或者是否可以再这样做)。

假设我有一个功能区控件,其中有一个名为“channelList”的下拉列表,而功能区上的其他位置有一个名为“labelText”的文本框。这些项目中的每一个都有一个独特的回调函数 - 当我在 labelText 中输入内容时,它的回调会触发,而当我从 channelList 列表框中选择一个项目时,它的回调会触发,并将列表项作为参数传递。

令我困惑的是如何在channelList回调中使用“something”更新labelText文本框内容。

有没有办法从列表框回调中直接访问文本框控件,或者我必须生成某种事件?我将使用什么方法或函数来设置控件的文本值? (我需要将 IRibbonControl 对象转换为其他对象吗?)

最佳答案

解决方案是答案和评论的组合,所以这里是:

  • 将“getText”回调子例程名称添加到功能区 XML,特定于“labelText”编辑框。
    editBox id="labelText" label="Text:" sizeString="xxxxxxxxxx"    onChange="TextboxCallback" getText="UpdateTextBoxText"    screentip="Channel label"    supertip="Limited to 10 characters. Press Enter once finished typing." 
  • 在组合框回调函数中,将所需的编辑框文本设置为全局文本,并以“labelText”作为参数调用 Ribbon.InvalidateControl。
    MyRibbon.InvalidateControl "labelText"
  • 实现编辑框回调,将句柄传递给功能区和另一个变量 ByRef 以包含要更新的“内容”。使用全局变量通过 ByRef 参数更新控件的文本。
    Sub UpdateTextBoxText(control As IRibbonControl, ByRef returnedVal)    Select Case (control.id)               Case "labelText"            returnedVal = LabelText    End Select    End Sub

我想这就是“进步”。 labelText.Value = "blah"太简单了。

关于vba - 从另一个控件的回调更新 iRibbon 控件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18004053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com