选定范围内的VBA验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选定范围内的VBA验证相关的知识,希望对你有一定的参考价值。

我似乎无法在下面的示例中使我的验证正常工作。我想限制用户,以便他/她不能用已经在单元格中的任何数字或字母覆盖数字。(例如:如果单元格中有9,并且他/她想要将其覆盖为8,不要让它,只是弹出错误信息并将其重置为原始值)。我已经在vba和excel的数据中尝试了几个限制 - >验证选项并观看了大量视频,但我似乎无法弄明白,认为它必须是一些微不足道的命令我只是不知道它。问题是,值会在范围内不断变化,因此我不能只选择具有值的单元格。

选定的范围是B2:J10。

enter image description here

答案

受到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验证的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA删除范围内的空白行

在 Excel 2016 中使用 VBA 将选定范围移动到一列上

当参考范围内的值发生变化时,VBA 更新公式

使用 VBA 将超链接字段写入循环内的另一个工作表范围

VBA中如何取得行号和列号如何选定这一范围的值

Wordpress - 将代码片段包含到布局的选定部分的插件