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
很难提供更多帮助,因为您没有说明如何使用引用。有关代码名的更多信息:
有关代码名的更多信息: