选定范围内的VBA验证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选定范围内的VBA验证相关的知识,希望对你有一定的参考价值。
我似乎无法在下面的示例中使我的验证正常工作。我想限制用户,以便他/她不能用已经在单元格中的任何数字或字母覆盖数字。(例如:如果单元格中有9,并且他/她想要将其覆盖为8,不要让它,只是弹出错误信息并将其重置为原始值)。我已经在vba和excel的数据中尝试了几个限制 - >验证选项并观看了大量视频,但我似乎无法弄明白,认为它必须是一些微不足道的命令我只是不知道它。问题是,值会在范围内不断变化,因此我不能只选择具有值的单元格。
选定的范围是B2:J10。
答案
受到extensionhelp问题的启发,我想出了一种限制包含值的单元格的方法。这是代码,如果有人想知道它:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng
Dim MyCell
Set Rng = Range("B2:J10")
For Each MyCell In Rng
If MyCell.Value = "" Then
Else: ActiveSheet.Unprotect
ActiveSheet.Protect Contents:=True
End If
Next
End Sub
另一答案
基于上面的评论,听起来像使用VBA锁定/解锁单元格是最佳选择。默认情况下,工作表中的每个单元格都已锁定,但在您保护工作表之前锁定不会生效。在您生成拼图时,使用以下内容解锁特定单元格:
ActiveSheet.Range("A1").Locked = False
生成拼图后,请使用以下方法保护工作表:
ActiveSheet.Protect Password:="SomePassword", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
如果在宏中,您需要取消保护工作表,您将使用:
ActiveSheet.UnProtect Password:="YourPassword"
以上是关于选定范围内的VBA验证的主要内容,如果未能解决你的问题,请参考以下文章