保护工作表,但取消保护文本输入形状

时间:2013-11-17 08:12:48

标签: excel-vba vba excel

我一直在谷歌上搜索这个网站。如果这是一个简单的问题或经常得到回答,我很抱歉,但我还没有找到我的解决方案。

本质上,我创建了一个填充了输入表单控件对象(非ActiveX)和一些形状的工作表。

所以我想要保护这张表,但我想选择允许输入的特定形状(几个文本框)。我不希望用户移动东西,点击随机单元格等。我想要5-6个特定的表单控件,我已命名为允许输入,其他一切都被锁定。

我该怎么做?再一次,对不起应该是一个简单的答案,但显然我的搜索不是问正确的问题。

' Locks the main config pages and hides everything the user shouldn't touch
Public Sub ProtectUserFromUser()

    Set configsheet = Sheets(MgmtConfigSheet)
    Set authsheet = Sheets(AuthDataSheet)
    Set mydebugsheet = Sheets(debugsheet)

    authsheet.Visible = xlSheetVeryHidden
    configsheet.Visible = xlSheetVisible
    mydebugsheet.Visible = xlSheetVeryHidden

    Call UnprotectInput
    configsheet.Protect

End Sub

' All the fields user should be able to input on here
Private Sub UnprotectInput()
    Set x = configsheet.Shapes("testInputBox")
    x.Locked = False

End Sub

这里发生的事情是我仍然可以点击并选择单元格,但我无法在testInputBox中输入任何输入字符。设置Sheets时的变量很好。如何使configsheet仅响应或接受选定位置/形状/范围等的输入?

更新为了清楚说明,我试图输入的文本框虽然不允许用户移动文本框,但是创建为Shape并且它嵌入在工作表中,而不是一种形式。 Locked属性中未选中Lock textShape框。

1 个答案:

答案 0 :(得分:1)

你必须做两件事。既不需要VBA。

  1. 您需要确保表单控件已解锁

  2. 确保表单控件正在写入的单元格不受保护。 (格式化单元格对话和取消保护单元格)


  3. 编辑:以下内容已更新,以反映处理形状,而非表格控制

    1. 确保形状不受保护(您在现有代码中执行此操作)

    2. 您的电子表格保护代码也需要更改以允许编辑对象

    3. 更改此行

      configsheet.Protect
      

      到此:

      configsheet.Protect _
          DrawingObjects:=False, _
          Contents:=True, _
          Scenarios:=True