Привет У меня есть кнопка, которая позволяет моему боссу удалить 1 из многих листов в книге на основе его ввода имени листа. Эта кнопка «Удалить лист» защищена паролем, так как другие люди используют книгу, я бы не хотел, чтобы они удаляли что-либо.Защитите специальную кнопку листа?
Теперь это не мешает им щелкнуть правой кнопкой мыши на конкретном листе и удалить его, поэтому мне нужен способ ЗАЩИЩАТЬ все листы, когда кнопка «Удалить лист» не нажата, и НЕ УДАЛЯЙТЕ все листы, как только вводится пароль для этой кнопки правильно, , так как кнопка не может удалить защищенный лист.
Удалить лист Кнопка Код:
Private Sub CommandButton4_Click()
Dim delSheet As String
Dim response As String
Dim SheetFound As Boolean
Dim MyPass As String
Dim MyPasswrd As String, answ As String
MyPasswrd = "test" 'password verification puts trigger in cell A100, an deletes when file close
If Range("A101").Value <> "OK" Then
answ = InputBox("Please Enter The Password To Continue.", "Enter Password")
If answ <> MyPasswrd Then
MsgBox "Incorrect Password!", vbExclamation, "Warning"
Exit Sub
End If
Range("A101").Value = "OK"
End If
delSheet = InputBox("Please Enter The LAST NAME Of The DTS You Want To Remove", "Remove A DTS") 'user input
If delSheet = "" Then
MsgBox "You Did Not Complete The Entry.", vbOKOnly + vbInformation, "Warning" 'if NULL input displays this message
Exit Sub
Else
If IsLetter(delSheet) = False Then GoTo Display 'checks the user input
response = MsgBox("WARNING!! This Action Cannot Be Undone, Do You Still Want To Continue?", vbExclamation + vbYesNo, "Warning") 'verfies user input
If response = vbYes Then 'if input is yes selects sheet IF ITS FOUND
On Error Resume Next
ActiveWorkbook.Sheets(delSheet).Select
If Err = 0 Then SheetFound = True 'searches for sheet
On Error GoTo 0
If SheetFound = False Then 'if sheet not found displays this message
MsgBox prompt:="The sheet '" & delSheet & "' Could Not Be Found In This File!", Buttons:=vbExclamation, Title:="Search Result"
Exit Sub
Else
Application.DisplayAlerts = False 'Finally deletes sheet and bypass xcel warning for sheet deletion
Sheets(delSheet).Delete
Application.DisplayAlerts = True
MsgBox ("The DTS " & delSheet & " Was Successfully Removed") 'message for sucessfully deleting the sheet
Application.Goto Reference:=Worksheets("Control Center").Range("B1"), Scroll:=True
End If
Else
response = vbNo 'if user does not want to delete sheet exits window
Exit Sub
Display:
MsgBox "Invalid Character In Last Name. Please Only Use Letters And Numbers(1-9), NOT Spaces and Specail Characters (! @ # $ %^& * - + = \ _ .)", vbExclamation, "Warning"
End If
End If
End Sub
Удаление листа не может быть остановлено, по крайней мере, не без большого количества защиты кода/структуры. Но прежде, чем сохранить книгу, вы всегда можете определить присутствие листа, а если этого нет, вы не сможете сохранить книгу. Это самый простой и простой маршрут. – cyboashu
Я провел некоторое исследование и нашел это [Удалить защищенный лист] (http://stackoverflow.com/questions/23645870/prevent-user-from-deleting-a-particular-sheet), но я не знаю, как реализовать это в мой код. В основном вы создаете контрольный лист со всеми именами листов, а затем, когда вы нажимаете на лист в элементе управления, он запускает макрос, чтобы УНИЧТОЖИТЬ все листы, чтобы его можно было удалить, затем листы в рабочей книге возвращаются к «ЗАЩИЩЕНЫ». – Deathkamp