我建立了一个小的Excel工具,该工具基本上要求用户输入一些成本要素并吐出输出。在Admin模式下,我创建了Lock和Unlock按钮,允许admin用户保护和取消保护所有工作表以进行编辑。我的工具总共有10张纸。除了两张纸以外,这些按钮都工作正常。
“解锁”宏取消保护除“成本输入”表之外的所有表。但是,如果我使用一小段代码来保护即时窗口中的“成本输入”表,那么它可以正常工作!
Sub admin_unlock_Click()
Application.ScreenUpdating = False
Sheets("Home").Unprotect Password:="xxx"
Sheets("Cover Page").Unprotect Password:="xxx"
Sheets("Study Categorization").Unprotect Password:="xxx"
Sheets("Cost Inputs").Unprotect Password:="xxx"
Sheets("Price Indicators").Unprotect Password:="xxx"
Sheets("Benchmarking Output").Unprotect Password:="xxx"
Sheets("Output Sheet").Unprotect Password:="xxx"
Sheets("Instructions").Unprotect Password:="xxx"
Sheets("Glossary").Unprotect Password:="xxx"
Sheets("Export to CRM").Unprotect Password:="xxx"
Application.ScreenUpdating = True
End Sub
Lock宏保护除输出工作表以外的所有工作表。如果将相关的代码放在立即窗口中,它也将不起作用。
Sub admin_lock_Click()
Application.ScreenUpdating = False
Sheets("Home").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Cover Page").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Study Categorization").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Cost Inputs").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Price Indicators").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Benchmarking Output").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Output Sheet").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Instructions").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Glossary").Protect Password:="xxx", UserInterFaceOnly:=True
Sheets("Export to CRM").Protect Password:="xxx", UserInterFaceOnly:=True
Application.ScreenUpdating = True
End Sub
关于这里可能出什么问题的任何想法吗?
谢谢! Dawm89
答案 0 :(得分:1)
.Protect
默认情况下保护VBA中的锁定单元。您的工作表可能没有锁定的单元格。作为解决方法,请尝试以下操作:
在VBA中创建一个新模块。 在新模块中,复制并粘贴:
Sub TestMe()
Worksheets("Cost Inputs").Cells.Locked = True
End Sub
在立即窗口中,输入TestMe
,然后按 Enter 。
再次运行您的代码。它受到保护吗?如果不是,则在代码上robably have On Error Resume Next
。
答案 1 :(得分:1)
考虑一个工作表循环,而不是像这样输入每个工作表名称〜
Sub admin_unlock_Click()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Unprotect "xxx"
Next ws
End Sub
Sub admin_lock_Click()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Protect "xxx", UserInterFaceOnly:=True
Next ws
End Sub
如果要锁定每张纸,为什么不锁定书呢?然后,您只需要保护/取消保护书,而不是保护每张纸。