vba - Excel:按钮操作代码 - 为什么我不能使用工作簿和工作表模块

标签 vba excel button

我有一个带有模板(带有 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/

相关文章:

vba - 如何找到以特定字母开头的单词并删除该行?

excel - VBA检查工作表是否存在 - 需要对象错误

excel - 如何将表格样式应用于当前选择

excel - 为什么从 Evaluate 调用时 VBA Find 循环失败?

excel - OleDb - 从 Excel 读取缓慢

html - 如何使两个相邻的按钮始终大小相同

vba - 为什么 wbk.wks.Range 不起作用?当我使用工作簿和工作表名称时它可以工作

excel - 如何在Excel数据透视表中计算值

java - 使用带有不同类内部代码的按钮

java - 如何让按钮实际出现在屏幕上?