我有一个带有模板(带有 vba 代码和按钮操作)的个人工作图,我在需要时将其复制到工作表中。它创建一个工作表来快速访问许多 > 25 个工作表,就像一个假弹出窗口(excel 2016 macos)。当我将它直接编程到工作表模块中时,它确实运行良好。它收集工作表并使用以下代码创建按钮。
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
但是现在由于某种原因,当被调用的子在工作表模块中时它不起作用。我收到找不到它的通知。如果我将它放入代码模块中,它就可以工作。我当然搜索过网络,但找不到任何说它无法工作的东西。
我的问题 - 我怎样才能让按钮操作恢复到与其余代码相同的工作表模块中?
最佳答案
通常,当例程是工作表的成员时,工作表的名称隐含地是例程名称的一部分。
btn.OnAction = "Sheet1.btnAction"
或者,就像在您的代码中一样,您希望将其绑定(bind)到 TOC_WS 表中的例程:
btn.OnAction = TOC_WS.CodeName & ".btnAction"
此外,如果您想将例程移至代码模块
ThisWorkbook
,btn.OnAction = "ThisWorkbook.btnAction"
关于vba - Excel:按钮操作代码 - 为什么我不能使用工作簿和工作表模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43825610/