我希望每当关闭工作簿时,都应调用工作表(sheet13)的Sub,但如屏幕截图所示,我收到错误无效或不合格的引用。 到目前为止,我已经尝试过
B2_Click
!Sheets("sheet13").B2_click
!Sheets("Employee Names").B2_click
Thisworkbook.Sheets("Employee Names").B2_click
我每次都出错。
答案 0 :(得分:1)
您的最后一个示例应该可以工作,因此我将故障排除直接引向您所调用的方法。在新的工作簿中尝试以下操作:
在ThisWorkbook模块中
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Worksheets("Sheet13").Test
End Sub
在Sheet13模块中
Sub Test()
MsgBox "Closing"
End Sub
如果可行,那么您就有一个起点。
答案 1 :(得分:0)
首先,其他人已经提到的简单解决方案:
ThisWorkbook.Sheets("January").Something
(字符串区分大小写!)
有多种方法来引用工作表,并且工作表的名称有不同的类型。您必须区分“ CodeName”和“ Name”。 您会很容易找到有关这两者之间区别的更多信息。
主要区别在于Name
可以由用户更改,它是Excel界面底部的选项卡上可见的名称。
CodeName
只能通过VBA界面进行更改。
创建工作表(Sheet1等)时,CodeName
和Name
通常是相同的。
要按名称引用工作表,可以使用以下代码:
ThisWorkbook.Sheets("SomeName").SomeFunction()
CodeName
可以这样直接使用:Sheet2.SomeFunction()
,但是我建议先将CodeName更改为有意义/富有表现力的东西!
有关Bang运算符!
的更多信息,可以在这里找到:
https://rubberduckvba.wordpress.com/2018/03/15/vba-trap-default-members/
有关参考表的广泛答案:
https://stackoverflow.com/a/41481428/10223558