我正在构建一个工具,用户可以在其中为各个项目创建工作表,稍后将用于自动生成powerpoint幻灯片。一切都很顺利,直到我尝试添加工作表保护来限制他们的编辑仅限于所需的输入单元格...
以下是每当添加新项目时都会使用新名称复制的模板表
正如您所看到的那样,工作表受到保护,但我可以编辑我需要的单元格(例如D2),因为它们未被锁定
通过表单收集一些用户输入后,我使用此代码将模板表复制到同一工作簿中的新工作表... wsShortBlank是模板表
wsShortBlank.Visible = xlSheetVisible
With ThisWorkbook
wsShortBlank.Copy After:=.Sheets(.Sheets.Count)
Set sh = ActiveSheet 'the copied sheet should be the active one, so grab a handle to it
End With
wsShortBlank.Visible = xlSheetVeryHidden
sh.Name = txtPE.Value & " " & txtPEC.Value
Unload Me
With sh
.Activate
.Unprotect password:=myPassword
'add done editing button
.Buttons.Add(468.75, 30, 210.75, 60.75).Select
Selection.OnAction = "doneEditing"
Selection.Characters.Text = "Done Editing"
'populate the data we know
.Range("B33").Value = comboClass.Value
.Range("B34").Value = txtPE.Value
.Range("B35").Value = txtPEC.Value
.Range("B36").Value = txtTask.Value
.Protect password:=myPassword
.Range("D2").Select 'stick the cursor in the first input field
End With
Application.ScreenUpdating = True
我现在有了这张表
“完成编辑”按钮链接到隐藏当前工作表并重新显示主菜单表单的子
但如果我尝试编辑单元格D2,我会得到这个
好像牢房被锁了。但是,如果我点击其他工作表然后点击返回此工作表,我可以编辑单元格D2。
是什么给出了?
作为更新,我还修改了代码,以便在复制工作表后,它经过并单独设置单元格的锁定属性。这是在上面代码块的末尾添加的
.Range("D2:D7").Locked = False
.Range("D11:D12").Locked = False
.Range("C17:J19").Locked = False
.Range("C23:G23").Locked = False
.Range("D24:H24").Locked = False
.Range("E25:I25").Locked = False
.Range("F26:J26").Locked = False
.Range("B30:G30").Locked = False
.Protect password:=myPassword
但它没有任何区别。