Excel VBA-功能区-设置EditBox的值
我在excel功能区上有一个带有编辑框的自定义选项卡。用户应在编辑框中输入一个介于100和200之间的数字。如果用户输入了除此之外的任何内容,则应弹出一条错误消息,并且编辑框中的文本应更改为100。最后一部分是我遇到的困难,将EditBox文本设置为“100” EditBox onChange事件的回调 Sub-setQVal(控件作为IRIBOnControl,ByRef文本) 如果不是数字(文本)或文本<100或文本>200,则 MsgBox“错误!请输入一个介于100和200之间的值。” text=100'这似乎不起作用 出口接头 如果结束 QVal=文本 端接头Excel VBA-功能区-设置EditBox的值,excel,vba,ribbon,Excel,Vba,Ribbon,我在excel功能区上有一个带有编辑框的自定义选项卡。用户应在编辑框中输入一个介于100和200之间的数字。如果用户输入了除此之外的任何内容,则应弹出一条错误消息,并且编辑框中的文本应更改为100。最后一部分是我遇到的困难,将EditBox文本设置为“100” EditBox onChange事件的回调 Sub-setQVal(控件作为IRIBOnControl,ByRef文本) 如果不是数字(文本)或文本200,则 MsgBox“错误!请输入一个介于100和200之间的值。” text=100
任何帮助都将不胜感激。onChange回调的签名应如下所示:
Sub OnChange(control As IRibbonControl, text As String)
要更改文本,需要实现getText
回调:
Function GetText(control As IRibbonControl) As String
当功能区UI无效时,Office应用程序将调用getText
回调。因此,您需要强制UI调用回调。对于代码实现的每个回调,都会缓存响应
例如,如果外接程序编写器为按钮实现了getImage
回调过程,则调用该函数一次,加载图像,然后如果需要更新图像,则使用缓存的图像,而不是调用该过程。在外接程序通过使用InvalidateControl
方法发出缓存值无效的信号之前,此过程对控件保持不变,此时将再次调用回调过程并缓存返回响应
在下面的示例中,启动主机应用程序将触发onLoad
事件过程,然后该过程将调用一个过程,该过程将创建表示功能区UI的对象。接下来,定义一个回调过程,使UI上的控件无效,然后刷新UI
<customUI … OnLoad="MyAddInInitialize" …>
我要做一些猜测来尝试
control.text=100
或control.text.value=100
或text.value=100
或..=“100”
。还有什么是QVal
?它没有在任何地方申报。还有什么代码调用此子对象(值是如何通过参数传递的)?如果Microsoft在模式中添加微调器框,并带有“Min”和“Max”属性,则此操作将更轻松。。。
<customUI … OnLoad="MyAddInInitialize" …>
Dim MyRibbon As IRibbonUI
Sub MyAddInInitialize(Ribbon As IRibbonUI)
Set MyRibbon = Ribbon
End Sub
Sub myFunction()
MyRibbon.InvalidateControl("editBoxControlID") ' Invalidates the cache of a single control
End Sub