关闭工作簿时访问工作表中的子项

时间:2019-03-04 10:04:40

标签: excel vba

我希望每当关闭工作簿时,都应调用工作表(sheet13)的Sub,但如屏幕截图所示,我收到错误无效或不合格的引用。 到目前为止,我已经尝试过

  B2_Click

  !Sheets("sheet13").B2_click

  !Sheets("Employee Names").B2_click

  Thisworkbook.Sheets("Employee Names").B2_click 

我每次都出错。

enter image description here

2 个答案:

答案 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等)时,CodeNameName通常是相同的。

要按名称引用工作表,可以使用以下代码: ThisWorkbook.Sheets("SomeName").SomeFunction()
CodeName可以这样直接使用:Sheet2.SomeFunction(),但是我建议先将CodeName更改为有意义/富有表现力的东西!

(Name)是代码名称,Name是可见的名称
Properties Sheet Example

有关Bang运算符!的更多信息,可以在这里找到: https://rubberduckvba.wordpress.com/2018/03/15/vba-trap-default-members/

有关参考表的广泛答案:
https://stackoverflow.com/a/41481428/10223558