Ошибка выполнения VBA '1004' в процедуре, которая работала безупречно - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть защищенная форма, которая организует ввод пользователя из открытых ячеек на другой лист Excel и отправляет его по электронной почте конкретным людям.Эта форма работала безупречно в течение многих лет, но внезапно вчера она выдает Ошибка времени выполнения '1004': ошибка приложения или объекта .Когда я вписываю что-либо в форму, сразу же появляется ошибка, и отладчик выделяет следующую строку кода.

Range("AL6").Font.Color = vbWhite

В форме, где пользователь добавляет свою информацию, ячейки, которые открыты для пользователей, варьируются от AF6-AK6 и автоматически заполняют дату завтрашнего дня.AL6 находится вне этого и защищен.В ячейке «AL6» ничего нет и быть не должно.Это блок кода, в котором находится ошибка.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
       If Time > 15 / 24 And Range("AF6") = Application.WorksheetFunction.WorkDay(Date, 0) Then
           Range("AL6").Font.Color = vbRed
       Else
           Range("AL6").Font.Color = vbWhite
       End If

 End Sub

Форма также регулярно сохраняется, поэтому я не думаю, что это вопрос дублирования самого себя и его повреждения.Я также не могу исключить эту возможность.Какие-нибудь мысли?

1 Ответ

0 голосов
/ 18 сентября 2018

Похоже, что проблема связана с защитой листа.

Можно либо установить для ячейки "AL6" значение locked = false, либо использовать событие Workbook_Open, чтобы применить блокировку только пользовательского интерфейса, что позволитVBA для запуска, как если бы она была разблокирована:

Например:

Private Sub Workbook_Open()

    Thisworkbook.sheets("<put your sheet name here>").Protect "Password", UserInterfaceOnly := True

End Sub

Дополнительная информация о UserInterfaceOnly: Защита ячеек в Excel, но позволяет изменять их с помощью сценария VBA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...