宏运行时错误'9':下标超出范围

时间:2014-02-20 22:06:22

标签: excel excel-vba vba

我在网上发现了一个宏来保护带有密码的工作表。它运行正常,但是当我保存文件时,我收到消息:运行时错误'9':订阅超出范围。我之前从未编程或使用过Visual Basic,可以使用一些帮助。谢谢

宏是:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'Step 1:Protect the sheet with a password
    Sheets("Sheet1").protect Password:="btfd"

'Step 2: Save the workbook
    ActiveWorkbook.Save
End Sub

3 个答案:

答案 0 :(得分:3)

“下标超出范围”表示您已尝试从不存在的集合中访问元素。您的工作簿中是否有“Sheet1”?如果没有,您需要将其更改为您要保护的工作表的名称。

答案 1 :(得分:2)

为什么使用宏? Excel内置密码保护功能。当您选择文件/另存为...时,按保存按钮应该有一个工具按钮,然后单击它,然后单击“常规选项”,您可以在其中输入“要打开的密码”和“要修改的密码”。

答案 2 :(得分:0)

当您收到错误消息时,您可以选择单击" Debug":这将引导您到达发生错误的行。 Dark Canuck似乎是正确的,我猜错误发生在这条线上:

Sheets("Sheet1").protect Password:="btfd"

因为很可能是" Sheet1"不存在。但是,如果您说" 它工作正常,但是当我保存文件时,我收到消息:运行时错误' 9':订阅超出范围&# 34;它让我觉得错误发生在第二行:

ActiveWorkbook.Save

请先按“调试”按钮检查一下吗? 最重要的是,正如Gordon Bell所说,你为什么使用宏来保护工作簿?