我一直在谷歌上搜索这个网站。如果这是一个简单的问题或经常得到回答,我很抱歉,但我还没有找到我的解决方案。
本质上,我创建了一个填充了输入表单控件对象(非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 text
和Shape
框。
答案 0 :(得分:1)
你必须做两件事。既不需要VBA。
您需要确保表单控件已解锁
确保表单控件正在写入的单元格不受保护。 (格式化单元格对话和取消保护单元格)
编辑:以下内容已更新,以反映处理形状,而非表格控制
确保形状不受保护(您在现有代码中执行此操作)
您的电子表格保护代码也需要更改以允许编辑对象
更改此行
configsheet.Protect
到此:
configsheet.Protect _
DrawingObjects:=False, _
Contents:=True, _
Scenarios:=True