选定范围内的VBA验证

问题描述 投票:-1回答:2

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

选定的范围是B2:J10。

enter image description here

excel vba validation
2个回答
1
投票

受到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

0
投票

基于上面的评论,听起来像使用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"
© www.soinside.com 2019 - 2024. All rights reserved.