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

Excel 如何获取对生成事件的工作表的引用?,excel,vba,Excel,Vba,在工作表中,我可以将代码附加到事件,如下所示: Private Sub Worksheet_Calculate() ' .. code here End Sub 如何获取对生成事件的工作表的引用? 我希望有一个100%安全的方式,这样我就不必担心在名称工作表更改等情况下代码被破坏 ActiveSheet不正确,因为不能保证任何工作表在(重新)计算时处于活动状态 您可以使用调用者: Application.Caller.Worksheet.Name 您可以使用调用者: Applicatio

在工作表中,我可以将代码附加到事件,如下所示:

Private Sub Worksheet_Calculate()
  ' .. code here
End Sub
如何获取对生成事件的工作表的引用?

我希望有一个100%安全的方式,这样我就不必担心在名称工作表更改等情况下代码被破坏

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

您可以使用调用者:

Application.Caller.Worksheet.Name
您可以使用调用者:

Application.Caller.Worksheet.Name

您可以使用Codename属性:

Private Sub Worksheet_Calculate()
Debug.Print Me.CodeName
End Sub
默认情况下,它与工作表的名称相同,但您可以在VBE的“属性”窗口中更改它-它是“名称”属性。用户无法更改它。(复制图纸会在名称中添加一个数字,例如,Sheet1变为Sheet11

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

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

很难提供更多帮助,因为您没有说明如何使用引用。

您可以使用Codename属性:

Private Sub Worksheet_Calculate()
Debug.Print Me.CodeName
End Sub
默认情况下,它与工作表的名称相同,但您可以在VBE的“属性”窗口中更改它-它是“名称”属性。用户不能更改它。(复制工作表会在名称中添加一个数字,例如,Sheet1变为Sheet11。)

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

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

很难提供更多帮助,因为您没有说明如何使用引用。

有关代码名的更多信息:


有关代码名的更多信息: