单击 ActiveX 按钮捕获工作表名称

Capturing Worksheet name on ActiveX button click

下面的代码运行良好。我只是想知道是否有更好的方法来获取工作表名称。

场景:我有 "x" 个带有 "n" 个切换按钮的工作表。每个切换按钮通过隐藏的切片器控制工作表中显示的数据。要切换的数据只是零和一,所以我 show/hide 单击切换按钮时为“1”。

代码:

  Private Sub tgl_btn_Click()
    Set InputSheet = Worksheets("My Worksheet")
    Call do_filter("myvalue", tgl_btn.Value, "PivotTable1")   
 End Sub

do_filter 采用切换按钮的名称,连同值和枢轴 table 名称到一个模块,该模块 hide/unhides 值在枢轴 table 中。

因此,工作表上的每个切换按钮在模块调用之前都包含以下行:

Set InputSheet = Worksheets("My Worksheet")

有没有什么方法可以在每次单击按钮时不将其硬编码到逻辑中来获取此工作表名称?

原因:用户重命名了工作表,因此关闭了切换按钮功能。

The reason: Users rename the worksheet

是的,用户擅长打破脆弱 VBA 代码 - 非常 实际上很好!

有时您可以利用 ActiveSheet - 这很好。但有时你需要得到一个特定的工作sheet,使用它Name会给你带来同样的问题:用户破坏东西。

Project Explorer (Ctrl+R) 中找到 select sheet,然后查看您的 Properties toolwindow (F4) - 注意 Name 属性 匹配用户可以随意更改的名称:

另请注意,这里有一个 (Name) 属性,其值为 Sheet1。这是作品sheet的CodeName。 VBA 使用该标识符定义一个 global-scope 对象变量,因此您可以这样做:

Set inputSheet = Sheet1

无论用户将 sheet 重命名为什么,它都会起作用。