2014-02-20 2 views
2

Я нашел макрос в Интернете, чтобы защитить рабочий лист с помощью пароля. Он отлично работает, но когда я сохраняю файл, я получаю сообщение: ошибка времени выполнения «9»: подписка выходит за пределы диапазона. Я никогда не программировал или не использовал визуальный базовый язык до и не мог использовать некоторую помощь. Спасибоmacro run-time error '9': subscript out of range

Макрос является:

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

«Подстрочный вне диапазона» указывает на то, что вы пытались получить доступ к элементу из коллекции, которая не существует. Есть ли «лист1» в вашей книге? Если нет, вам нужно изменить это на имя рабочего листа, который вы хотите защитить.

2

Почему вы используете макрос? Excel имеет встроенную защиту паролем. Когда вы выберете «Файл/Сохранить как ...», нажмите кнопку «Сохранить» кнопкой «Сохранить», затем нажмите «Общие параметры», где вы можете ввести «Пароль для открытия» и «Пароль для изменения».

0

Когда вы получите сообщение об ошибке, вы можете нажать «Отладка»: это приведет вас к строке, где произошла ошибка. Темный Canuck, похоже, прав, и я предполагаю, что ошибка происходит на линии:

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

, потому что скорее всего, «Лист1» не существует. Однако, если вы говорите «Это хорошо работает, но когда я сохраняю файл, я получаю сообщение: ошибка времени выполнения« 9 »: подписка выходит за пределы диапазона« это заставляет меня думать, что ошибка возникает во второй строке:

ActiveWorkbook.Save 

Не могли бы вы проверить это, нажав сначала кнопку отладки? И самое главное, как говорит Гордон Белл, почему вы используете макрос для защиты книги?