在工作表中,我可以将代码附加到这样的事件:
Private Sub Worksheet_Calculate()
' .. code here
End Sub
如何获取对生成事件的工作表的引用?
我想要100%安全的方式,所以当名称工作表更改等时我不必担心代码中断。
ActiveSheet
不正确,因为无法确保任何工作表在(重新)计算时处于活动状态。
答案 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)
有关代码名称的更多信息: