gpt4 book ai didi

Excel VBA - 功能区 - 设置编辑框的值

转载 作者:行者123 更新时间:2023-12-04 20:25:14 27 4
gpt4 key购买 nike

我在带有 EditBox 的 excel 功能区上有一个自定义选项卡。用户应在 EditBox 中输入 100 到 200 之间的数字。如果用户输入除此之外的任何内容,则应弹出错误消息,并且 EditBox 中的文本应更改为 100。最后一部分是我遇到困难的部分,将 EditBox 文本设置为“100”。

'Callback for EditBox onChange event
Sub setQVal(control As IRibbonControl, ByRef text)

If Not IsNumeric(text) Or text < 100 Or text > 200 Then
MsgBox "Error! Please enter a value between 100 and 200."
text = 100 'This doesn't seem to work
Exit Sub
End If

QVal = text

End Sub

任何援助将不胜感激

最佳答案

onChange 的签名回调应如下所示:

Sub OnChange(control As IRibbonControl, text As String)

要更改文本,您需要执行 getText打回来:
Function GetText(control As IRibbonControl) As String
getText当功能区 UI 无效时,Office 应用程序会调用回调。因此,您需要强制 UI 调用回调。对于代码实现的每个回调,响应都会被缓存。

例如,如果加载项编写器实现了 getImage按钮的回调过程,该函数被调用一次,图像加载,然后如果需要更新图像,则使用缓存的图像而不是调用过程。这个过程对控件保持不变,直到加载项通过使用 InvalidateControl 发出缓存值无效的信号。方法,此时再次调用回调过程并缓存返回响应。

在以下示例中,启动主机应用程序会触发 onLoad事件过程,然后调用创建表示功能区 UI 的对象的过程。接下来,定义一个回调过程,使 UI 上的控件无效,然后刷新 UI。
<customUI … OnLoad="MyAddInInitialize" …>

而在代码中,如果您需要更新文本(获取 getText 调用的回调),您需要使用以下方法:
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

关于Excel VBA - 功能区 - 设置编辑框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61883073/

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