如何在电子表格中使单元格只读?

6

我正在使用数据库值填充电子表格。我希望填充数据的单元格对用户只读。如何实现这一点?

5个回答

5
在这种情况下,我经常发现最好的方法是锁定工作表,但只针对用户使用UserInterfaceOnly参数,它仍然允许与工作表进行无限制的编程交互。
ActiveSheet.ProtectUser InterfaceOnly:=True

还有其他各种参数可以设置,这些参数仍然允许用户进行过滤、排序等操作。如果需要,帮助文件中有完整的列表。


5

取决于您想如何选择范围。这只是一个单元格。如果您返回到J1并更改值,则应该会提示。

Private Sub Worksheet_Change(ByVal Target As Range)
  Range("J1").Select
  Selection.Locked = True
  ActiveSheet.Protect Contents:=True
  Range("K1").Select

End Sub

只有在保护工作表之后,单元格才会被锁定。默认情况下,所有单元格都设置为已锁定,因此您需要解锁要允许用户更改的单元格。


如果我想让这个适用于一系列单元格,我该怎么做呢?请原谅我的无知,我是编程新手。 - gizgok
这会使所有单元格变为只读,我犯了什么错误吗?私有子程序 Worksheet_Change(cellrange As String) 范围(cellrange).Select 选择.Locked = True ActiveSheet.Protect Contents:=True结束子程序 - gizgok
尝试了这段代码,但是定义范围之外的其他单元格也被设置为只读。我们如何将只读功能限制在J1范围内? - ibexy

1
你可以尝试保护单元格,或者可以使用SelectionChange事件自己编写代码来实现... :
   Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect(Selection, Range("A24:A50")) Is Nothing Then
        Range("B1").Select
      End If
    End Sub

0

这个页面提供了一个小型子程序来保护一系列单元格。

摘录

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Not Intersect(Target, Range("H1:H10")) Is Nothing Then 
        Target.Offset(0, 1).Select 
        MsgBox "you may not enter that cell" 
    End If 
End Sub

为了保护H1:H10

当用户想要更改H1:H10中的单元格时,会出现警告消息,提示该单元格可能无法修改,并选择下一列(I)中的相邻单元格。


几乎可以确定这不是一个正确的答案。 - titus

0
在Excel中,您可以转到“保护”菜单,并指定需要密码修改的单元格。您也可以指定多个范围。
希望这是您所寻找的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接