我有一个下拉数据验证,它将选定选项的值保存到另一个单元格位置。这是使用以下方法完成的:
Private Sub Worksheet_Change(ByVal Target as range)
,当我尝试向其中输入字符串时,将弹出一条错误消息,这是预料之中的,因为除非在列表中,否则我们无法在下拉菜单中输入任何内容。但是,每当我尝试在错误消息框中单击“重试或取消”时,Change事件都会再次触发。
我已经有
Application.EnableEvents = False
但仍然无法正常工作。你能帮我么?如果由于下拉菜单而遇到错误消息,我不想再次触发Change事件。
这是代码和示例场景:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Cells(1, 2) = Target.Value
Application.EnableEvents = True
Debug.Print Cells(1, 2).Value
End Sub
Cell(1,1)=包含(A,B,C)的下拉列表
方案1: 我将从列表中选择A,不会遇到任何错误。
Debug.print:
A
方案2: 我将在下拉列表中输入字符'W',将会遇到错误。
错误:
该值与单元格中定义的数据验证限制不匹配。
Debug.Print:
A A A
如您所见,更改事件在方案1之后再次触发两次。
谢谢!
J
答案 0 :(得分:0)
如果工作表中的任何单元格发生更改,则允许触发change事件。您不需要启用事件限制,只需指定目标...
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Target.Value = "A" Or Target.Value = "B" Or Target.Value = "C" Then
Cells(1, 2) = Target.Value
End If
End if
End Sub