我想限制用户在Excel表格中编辑范围。
Scenario:
| A | B | C | D | E | F | G | H | I | J | ... IV
-------------------------------------------
1 | | | | | | | | | | |
-------------------------------------------
2 | | | | | | | | | | |
-------------------------------------------
3 | | | | | | | | | | |
-------------------------------------------
4 | | | | | | | | | | |
-------------------------------------------
...
65536
在上面的电子表格中,用户应该有权将Column A
范围编辑为Column H
。 Column I to IV
用户不应允许编辑任何文字或任何内容。对行数没有限制。
谢谢:)
答案 0 :(得分:2)
分三步
1)选择整张纸。格式化 - >锁定单元格 - >删除所有单元格的锁定。 (默认情况下,所有单元格最初都“锁定”)
2)选择所需的锁定列。格式化 - >锁定单元格 - >应用锁定(这是声明性的,你没有锁定任何东西,只是声明你将在下一步中锁定什么)
3)格式 - >保护工作表。 (这触发真正的保护)
你已经完成了。
HTH
答案 1 :(得分:2)
要以编程方式执行此操作,请在模块中尝试此操作(并根据您的需要进行调整):
Sub ProtectAToH()
Dim ws as Worksheet
For each ws In ActiveWorkbook.Worksheets
ws.Columns("A:H").Locked = False
ws.Protect Contents:=True, Password:="myPassword"
Next ws
End Sub
答案 2 :(得分:0)
sasfrog和belisarius提案的一些替代方案(仅为了丰富您的选择):
a)您也可以隐藏K:IV列,并保护工作表以防止取消隐藏 b)使用工具,保护,“允许用户编辑范围”选项,为属于Everyone组的用户定义范围$ a:$ h为可编辑而无密码,然后保护工作表。我喜欢那个。
不要忘记任何涉及Excel内置保护的解决方案都会阻止用户插入/删除行。
c)使用VBA(不会阻止删除/插入行):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect(Target, Range("$h:$iv")) Is Nothing) Then
Target.Value = "" 'or something else'
End If
End Sub
答案 3 :(得分:0)
ActiveSheet.ScrollArea = "$A:$H"
将限制用户可以选择的单元格。
答案 4 :(得分:0)
iDevlop的选项c)应该被修改以防止无限循环:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("A1:G25")) Is Nothing Then
If Not Target.Cells.Count > 1 Then 'Prevent Error on Row Insert or Delete
If Not Target.Value = "" Then Target.Value = "" 'Prevent infinite loop
End If
End If
End Sub
这仍然允许用户将多单元格复制粘贴到指定的Intersect范围内。没想出那一个。