Excel vba:限制excel表格中的编辑区域
我想限制用户在Ms Excel表格中编辑范围。Excel vba:限制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
用户不应允许编辑任何文本或任何内容。行数没有限制。
谢谢:)
以编程方式做到这一点,试试这个模块中(和适应,以满足您的需求):
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
在三个步骤
1)选择整个片材。格式 - >锁定单元格 - >删除所有单元格的锁定。 (默认情况下,所有单元格最初都是“锁定的”)
2)选择您想要的锁定列。格式 - >锁定单元格 - >应用锁定(这是说明性的,你没有锁住任何东西,只是宣布你将在下一步锁定什么)
3)格式 - >保护工作表。 (这触发了真正的保护)
你完成了。
HTH
因为所有的单元格实际上都是最初被锁定的,所以点1和点2应该被替换为单个步骤=“选择要解锁的列,格式 - >锁定单元格 - >移除锁定” – 2010-12-16 09:41:38
一些替代sasfrog和贝利萨留的提议(只是为了丰富你的选择) :
a)您也可以只隐藏K列:IV和保护工作表,以防止取消隐藏
b)使用的工具,保护,“允许用户编辑区域”选项,定义范围$答:$ H作为可编辑没有p用户属于Everyone组的用户密码,然后保护您的工作表。我喜欢那一个。
不要忘记,任何涉及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
ActiveSheet.ScrollArea = "$A:$H"
将限制用户可以选择什么样的细胞。
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
这仍然将允许用户进行多细胞复制粘贴到您指定的交集范围。没有想出那一个。
您可以最少评论所提供的答案。 – 2010-12-26 08:24:18