表格保护问题

时间:2017-11-15 20:47:04

标签: excel vba

我正在构建一个工具,用户可以在其中为各个项目创建工作表,稍后将用于自动生成powerpoint幻灯片。一切都很顺利,直到我尝试添加工作表保护来限制他们的编辑仅限于所需的输入单元格...

以下是每当添加新项目时都会使用新名称复制的模板表

enter image description here

正如您所看到的那样,工作表受到保护,但我可以编辑我需要的单元格(例如D2),因为它们未被锁定

enter image description here

通过表单收集一些用户输入后,我使用此代码将模板表复制到同一工作簿中的新工作表... 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

我现在有了这张表

enter image description here

“完成编辑”按钮链接到隐藏当前工作表并重新显示主菜单表单的子

但如果我尝试编辑单元格D2,我会得到这个

enter image description here

好像牢房被锁了。但是,如果我点击其他工作表然后点击返回此工作表,我可以编辑单元格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

但它没有任何区别。

0 个答案:

没有答案