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

问题描述 投票:1回答:2

我在VBA中遇到一个非常简单的功能问题:

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

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

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

calc.Cells()(工作得很好)

excel vba worksheet
2个回答
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项目时才能以编程方式进行更改,出于安全原因,默认情况下不允许这样做!


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
© www.soinside.com 2019 - 2024. All rights reserved.