如果我设置了一个子例程,以便可以从客户功能区按钮调用它,那么还可以从其他子例程调用这些子例程吗?我得到了参数非可选错误消息,但我不确定要传递给子例程的参数,因为我不是从功能区按钮调用,而是从另一个子例程本身内部调用。
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
注意,子名称应采用字符串格式。