如何在VBA模块中从活动工作表调用ToggleButton子过程
嘿,我明白你找这个解决方案找了好久的心情,这就给你一个靠谱的办法!
核心问题在于终端用户会修改工作表的显示名称、位置甚至数量,所以绝对不能依赖工作表的显示名称来调用代码——得用工作表的代码名称(就是你提到的"Tabelle 1",这个名称在VBA编辑器的属性窗口里的(Name)字段,终端用户除非特意进VBA编辑器改这个,否则它是固定不变的)。
具体步骤:
先确保工作表模块里的子过程是公开可调用的(显式声明
Public更保险,避免作用域问题):
在代码名为Tabelle 1的工作表模块里,把你的代码改成:Public Sub Reset_ToggleButton1() If ToggleButton1.Value = True Then ToggleButton1.Value = False End If End Sub在模块里直接通过工作表的代码名称调用这个子过程:
新建或打开你的标准模块,写入以下代码:Sub CallResetFromModule() ' 直接用代码名调用,不受工作表显示名称修改影响 Tabelle1.Reset_ToggleButton1 End Sub
为什么这个方案可行?
工作表的代码名称是VBA项目中的固定标识符,和用户随便修改的显示名称完全无关。不管用户把这个工作表改名叫“统计页”、“首页”,或者把它挪到工作簿的任何位置,只要代码名还是Tabelle 1,这个调用就永远有效。
如果之后你自己需要修改工作表的代码名(比如改成更直观的MainSheet),只需要同步修改模块里的调用代码即可,但终端用户一般不会触及VBA编辑器的属性设置,所以这个方案非常稳定。
内容的提问来源于stack exchange,提问作者Anne
相关产品推荐
相关产品推荐

