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 AColumn HColumn I to IV用户不应允许编辑任何文本或任何内容。行数没有限制。

谢谢:)

+0

您可以最少评论所提供的答案。 – 2010-12-26 08:24:18

以编程方式做到这一点,试试这个模块中(和适应,以满足您的需求):

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

+0

因为所有的单元格实际上都是最初被锁定的,所以点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 

这仍然将允许用户进行多细胞复制粘贴到您指定的交集范围。没有想出那一个。