Excel自定义功能区按钮调用其他功能区按钮的子例程



如果我设置了一个子例程,以便可以从客户功能区按钮调用它,那么还可以从其他子例程调用这些子例程吗?我得到了参数非可选错误消息,但我不确定要传递给子例程的参数,因为我不是从功能区按钮调用,而是从另一个子例程本身内部调用。

Sub Reset(ByVal Control As IRibbonControl)
    Call ResetForumlas
    Call ResetValues
End Sub
Sub ResetForumlas(ByVal Control As IRibbonControl)
    "Do some stuff"
End Sub
Sub ResetValues(ByVal Control As IRibbonControl)
    "Do Some more stuff"
End Sub

谢谢你的帮助。

这是一个旧帖子,但如果有人到达这里。。。试试这个:

Sub Reset(ByVal Control As IRibbonControl)
    Call ResetForumlas
    Call ResetValues
End Sub
sub test
    dim ribboncontrol as IRibbonControl
    call Reset (ribboncontrol)
end sub

请尝试使用out调用。像这个

Sub Reset(ByVal Control As IRibbonControl)
    ResetForumlas
    ResetValues
End Sub
Sub ResetForumlas(ByVal Control As IRibbonControl)
    "Do some stuff"
End Sub
Sub ResetValues(ByVal Control As IRibbonControl)
    "Do Some more stuff"
End Sub

在这种情况下,将参数作为可选变量传递非常有效:

Sub Reset(Optional ByVal Control As IRibbonControl)
    ResetForumlas
    ResetValues
End Sub
Sub ResetForumlas(Optional ByVal Control As IRibbonControl)
    "Do some stuff"
End Sub
Sub ResetValues(Optional ByVal Control As IRibbonControl)
    "Do Some more stuff"
End Sub

我总是给ribbon调用的subs添加一个_onAction后缀,以相应地识别它们

然后,可以用一个描述他们正在做什么的名称来调用正在做工作的子。

Sub ResetAll_onAction(ByVal Control As IRibbonControl)
    ResetForumlas
    ResetValues
End Sub
Sub ResetFormulas_onAction(ByVal Control As IRibbonControl)
    resetFormulas
End Sub
Sub ResetValues_onAction(ByVal Control As IRibbonControl)
    resetValues
End Sub
Public Sub resetFormulas()
   'Do some stuff
End Sub
Public Sub resetValues()
   'Do other stuff
End Sub

您可以使用;Application.run";而不是";呼叫";。当子系统位于不同的模块中时,它会有所帮助。在这种情况下,您也应该添加一个模块名称("Module1.ResetFormula")。

Sub Reset(ByVal Control As IRibbonControl)
    Application.run "ResetForumlas"
    Application.run "ResetValues" 
End Sub

注意,子名称应采用字符串格式。

最新更新