Ms access ms access弹出菜单项:格式/功能或子程序/传递参数

Ms access ms access弹出菜单项:格式/功能或子程序/传递参数,ms-access,vba,popupmenu,Ms Access,Vba,Popupmenu,在MS Access表单中,我有一个可用的弹出菜单,但我想知道如何以不同的方式设置它 弹出菜单定义: With CommandBars.Add("TreeNodeActions", msoBarPopup, False) With .Controls.Add(msoControlButton) .caption = "Copy" .OnAction = "=CopyNode()" End With End With 问题1:为什么需要等号和空参数

在MS Access表单中,我有一个可用的弹出菜单,但我想知道如何以不同的方式设置它

弹出菜单定义:

With CommandBars.Add("TreeNodeActions", msoBarPopup, False)
    With .Controls.Add(msoControlButton)
        .caption = "Copy"
        .OnAction = "=CopyNode()"
    End With
End With
问题1:为什么需要等号和空参数列表(没有它们就无法工作)?为什么不按照本论坛其他帖子中的建议,只使用
.OnAction=“copyNode”

问题2:我希望运行一个子例程,但唯一的方法是调用调用该子例程的函数-见下文。如何直接调用子例程

Private Function CopyNode()
    Call CopyBid
End Function

Private Sub CopyBid()
    Dim nodx As node

    Set nodx = Me.TreeView1.Nodes(Me.nodeKeySelected.Value)
    Me.BidIdToBeCopied = nodx.Tag
End Sub
问题3:弹出菜单位于treeview控件上;我希望将所选节点传递给子例程,这样我就不必将节点键存储在表单上(在树状视图中单击鼠标)并在上面的子例程中使用它。我希望能够有下面的。命令栏中定义的菜单项如何控制传递参数

Private Sub CopyBid(nodx As node)
    Me.BidIdToBeCopied = nodx.Tag
End Sub

我自己做了进一步的调查。不是决定性的,但我已经做到了:
Q1:未找到任何文档,只是ms access vba onAction属性中的语法是这样的。仍然觉得有点奇怪,无法找到对此的解释-我希望类似“等号确保随后的函数或过程被调用。结尾的括号是多余的,但必须为无参数函数添加”
Q2:似乎无法做到这一点-因此不可能重用现有子系统,除非将其更改为功能。奇怪,但可能又是生活中的一个事实。也找不到关于此文档的任何文档。
Q3:传递参数并不像看上去那么容易-强制括号表明,这只是在onAction规范中为具有参数的函数提供变量的问题。这并不是那么简单,可能是因为onAction规范是一个字符串,它触发了对已知函数名的搜索,而不考虑参数。我能够找到的一种提供参数的方法(最后是一些有用的信息!)可以在中找到。对我来说,感觉像是一件肮脏的工作,所以我仍然怀疑是否有更整洁的解决方案。我还没有测试这个“解决方案”