У меня есть sub "ProtectAllSheets" в Module1 и еще один в объекте Sheet1, который предназначен для удаления целых строк, если есть #REF! Ошибка в столбце C Sheet1. Он отлично работает, когда лист защищен ... НО как-то, когда я закрываю книгу и открываю ее снова (которая все еще защищена), он не удаляет строки с ошибками, хотя это "UserInterface = True". Если я снимаю защиту листа, он работает нормально. Кажется, как только я закрываю книгу, некоторая информация теряется «как-то» ... Я просто не могу понять, что, черт возьми, может быть не так с кодом.
Option Explicit
Public pwd1 As String, pwd2 As String
Sub ProtectAllSheets()
Dim ws As Worksheet
pwd1 = InputBox("Enter your password", "")
If pwd1 = "" Then Exit Sub
pwd2 = InputBox("Enter the password again", "")
If pwd2 = "" Then Exit Sub
'Checks if both the passwords are identical
If InStr(1, pwd2, pwd1, 0) = 0 Or _
InStr(1, pwd1, pwd2, 0) = 0 Then
MsgBox "Please type the same password. ", vbInformation, ""
Exit Sub
End If
For Each ws In ActiveWorkbook.Sheets
If ws.ProtectContents = False = True Then
ws.Protect Password:=pwd1, UserInterFaceOnly:=True
End If
Next ws
MsgBox "Sheets are protected."
End Sub
Option Explicit
Sub Worksheet_Activate()
Dim sh As Worksheet
Dim c As Long
Set sh = ActiveSheet
For c = 400 To 2 Step -1
If IsError(Cells(c, 3)) Then
Rows(c).EntireRow.Delete
End If
Next c
End Sub