У меня есть общая рабочая тетрадь с двумя листами, на одном листе много формул, поэтому я хочу защитить "лист 1".

Я также вырезал и вставил некоторый код VBA в "лист 1". VBA прекрасно работает, пока я не защищу лист. Но когда я защищаю лист, появляется ошибка времени выполнения 4.

Есть идеи, что не так?

проект

Private Sub Workbook_Open() 
StartBlink 
End Sub 

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
StopBlink 
End Sub

Module1

Public RunWhen As Double Sub StartBlink() 
With ThisWorkbook.Worksheets("sheet1").Range("a1").Font 
    If .ColorIndex = 3 Then   
        .ColorIndex = 2 
    Else 
        .ColorIndex = 3 
    End If 
End With 

RunWhen = Now + TimeSerial(0, 0, 1) Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!StartBlink", , True 
End Sub 

Sub StopBlink() 
ThisWorkbook.Worksheets("sheet1").Range("a1").Font.ColorIndex = _ 
    xlColorIndexAutomatic Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!StartBlink", , False 
End Sub

1 ответ1

0

Вы хотите защитить ячейку А1? Я думаю, что если вы снимите защиту (удалите заблокированную галочку из ячеек формата -> защита -> заблокирована) только ячейку A1 и защитите все остальные листы, код будет работать и мигать

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .