Vba Excel:按钮操作代码-为什么可以';我是否使用工作簿和工作表模块

Vba Excel:按钮操作代码-为什么可以';我是否使用工作簿和工作表模块,vba,excel,button,Vba,Excel,Button,我有一个带有模板(带有vba代码和按钮操作)的个人工作图,需要时可以将其复制到工作表中。它创建了一个表格,可以快速访问超过25张的表格,就像一个假弹出窗口(excel 2016 macos)。当我将它直接编程到sheet模块中时,它确实工作得很好。它收集图纸并使用以下代码创建按钮 Set btnRng = TOC_WS.Range(Cells(lastRow, btnCol), Cells(lastRow, btnCol)) Set btn = TOC_WS.Button

我有一个带有模板(带有vba代码和按钮操作)的个人工作图,需要时可以将其复制到工作表中。它创建了一个表格,可以快速访问超过25张的表格,就像一个假弹出窗口(excel 2016 macos)。当我将它直接编程到sheet模块中时,它确实工作得很好。它收集图纸并使用以下代码创建按钮

Set btnRng = TOC_WS.Range(Cells(lastRow, btnCol), Cells(lastRow, btnCol))
            Set btn = TOC_WS.Buttons.Add(btnRng.Left, btnRng.Top, btnRng.Width, btnRng.Height)
            With btn
                .OnAction = "btnAction"
                .Caption = WS.Name
                .Name = WS.Name
            End With
和按钮子

Sub btnAction()
   ......
End Sub
但是现在由于某种原因,当被调用的子对象位于Sheet模块中时,它不起作用。我接到通知说找不到它。如果我把它放进一个代码模块,它就会工作。我当然搜索过te网站,但找不到任何说它不能工作的东西


我的问题-如何使按钮操作恢复到与代码其余部分相同的工作表模块中?

通常,当例程是工作表的成员时,工作表的名称隐式地包含在例程的名称中

btn.OnAction = "Sheet1.btnAction"
或者,在代码中,您希望将其绑定到TOC_WS工作表中的例程:

btn.OnAction = TOC_WS.CodeName & ".btnAction"
此外,如果要将例程移动到代码模块
此工作簿

btn.OnAction = "ThisWorkbook.btnAction"

谢谢你的评论,但我还是得到了同样的结果。错误给出了按钮操作的完整路径。“De macro PP50Begroting.xlsm!TOC.btnAction kan niet worden gevonden.”您是否可以尝试编辑:
TOC_WS.CodeName
而不是
TOC_WS.Name
。嗯,有趣的是,我以前尝试过,但没有成功,但现在成功了。非常感谢你。