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

发布于 2024-12-08 19:15:47 字数 276 浏览 0 评论 0原文

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

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

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

我想要 100% 安全的方式,所以我不这样做必须担心工作表名称更改等情况下的代码破坏。

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

In a worksheet I can attach code to an event like so:

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

How can I get a reference to the worksheet the event was generated in?

I want to have a 100% secure way, so I don't have to worry about code breaking when the name worksheet changes etc.

ActiveSheet is not correct because it is not guaranteed that any sheet is active upon (re)calculate.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

や莫失莫忘 2024-12-15 19:15:47

您可以使用呼叫者:

Application.Caller.Worksheet.Name

You can use caller:

Application.Caller.Worksheet.Name
幸福丶如此 2024-12-15 19:15:47

您可以使用 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

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

You can use the Codename property:

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

By default it's the same name as the worksheet, but you can change it in the Properties Window of the VBE - it's the Name property. The user can't change it. (Copying a sheet adds a number to the name, e.g., Sheet1 becomes Sheet11.

You can also use it in the workbook-level event:

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

It's hard to be more helpful as you don't say how you'll use the reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文