如何获取对生成事件的工作表的引用?

时间:2011-10-07 12:32:31

标签: excel vba

在工作表中,我可以将代码附加到这样的事件:

Private Sub Worksheet_Calculate()
  ' .. code here
End Sub

如何获取对生成事件的工作表的引用?

我想要100%安全的方式,所以当名称工作表更改等时我不必担心代码中断。

ActiveSheet不正确,因为无法确保任何工作表在(重新)计算时处于活动状态。

3 个答案:

答案 0 :(得分:4)

您可以使用来电者:

Application.Caller.Worksheet.Name

答案 1 :(得分:1)

您可以使用Codename属性:

Private Sub Worksheet_Calculate()
Debug.Print Me.CodeName
End Sub

默认情况下,它与工作表的名称相同,但您可以在VBE的“属性”窗口中更改它 - 它是Name属性。用户无法更改它。 (复制工作表会在名称中添加一个数字,例如,Sheet1将成为Sheet11。

您也可以在工作簿级事件中使用它:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Sh.CodeName = "TheSheetICareAbout" Then
Debug.Print Sh.Name
End If
End Sub

由于您没有说明如何使用参考文献,因此很难提供更多帮助。

答案 2 :(得分:0)

有关代码名称的更多信息:

http://www.ozgrid.com/VBA/excel-vba-sheet-names.htm