尝试通过内部名称激活工作表会导致索引超出范围错误

时间:2019-03-27 03:49:21

标签: excel vba worksheet

我在使用VBA中的一个非常简单的功能时遇到了麻烦:

我正在使用2个工作表(计算和绘图)。因此,现在我想在必要时激活工作表,并通过(名称)而不是名称(在工作表的属性中指定)调用工作表,以使工作表“防白痴”。我不想使用工作表名称,但我不想使用工作表名称,因此当用户在前端更改工作表名称时,执行的代码仍然有效。

F.e。我的“计算”工作表的名称为“计算”,但(名称)为“计算”:

Worksheets("calc").Activate(抛出索引超出范围错误)

calc.Cells()(效果很好)

2 个答案:

答案 0 :(得分:0)

(name).Activate可以解决问题。 在我的示例中为:

calc.Activate

感谢@TimWilliams

编辑: 此属性称为CodeName,并且是只读的!

https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.codename

如果您尝试以编程方式更改它,则会引发此错误:

https://support.microsoft.com/en-us/help/282830/programmatic-access-to-office-vba-project-is-denied

因此,只有在您允许访问VBA项目(出于安全原因,默认情况下是不允许的)的情况下,才可以通过编程方式进行更改!

答案 1 :(得分:0)

尝试:

Option Explicit

Sub test()

    ThisWorkbook.Worksheets("Sheet1").Activate '<- Activate sheet using the name shown outside
    ws1.Activate '<- Activate sheet using the name shown in the VBA Editor

End Sub