仅当我想更改单独的单元格时,数据输入才会在 Excel 单元格中强制执行

仅当我想更改单独的单元格时,数据输入才会在 Excel 单元格中强制执行

我正在尝试制作一个 excel 文件,强制用户在文件中输入数据,不要让单元格留空。但我只想在用户更改某个单元格时强制用户输入数据。

这是必须输入支持信息才能输入分数的计分表。

例如,我选择单元格D12,其中可能已经有数据:

  • 如果我不尝试更改单元格,则什么也不会发生,并且我可以选择文件中的任何其他单元格。
  • 如果我尝试更改单元格D12,则必须在单元格中输入数据E12。如果我没有输入数据E12,则无法更改D12

答案1

对于这个特定的任务,你可以做类似的事情:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$E$12" Then
        ActiveSheet.Unprotect
        Select Case Range("E12").Value
            Case ""
                Range("D12").Locked = True
            Case Else
                Range("D12").Locked = False
        End Select
        ActiveSheet.Protect
    End If
End Sub

在工作表的代码中。如果您使用受保护的工作表,这将根据对 E12 的操作锁定/解锁 D12。

如果您不喜欢这种工作方式,或者不想保护工作表,您可以尝试类似但完全不同的方法。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$12" Then
        If Range("E12").Value = "" And Range("D12").Value <> "" Then
            Range("D12") = ""
            MsgBox "Please enter E12 before D12"
        End If
    End If
End Sub

这样,如果您在 E12 为空时在 D12 中输入了某些内容,它将被删除,并且会出现一个消息框告诉您原因。这
If Target.Address = "$D$12" Then是可选的,如果您总是想检查,可以完全删除,以防他们编辑 D12 然后删除 E12 中的值。或者您可以将其更改为 If Target.Address = "$D$12" Or Target.Address = "$E$12" Then
对于这种情况。

相关内容