Excel 为什么我的工作表\u更改事件不适用于复制、粘贴唯一值?

Excel 为什么我的工作表\u更改事件不适用于复制、粘贴唯一值?,excel,vba,Excel,Vba,我编写了一段代码,其中一列中的数字列表需要粘贴到另一列中,而不需要任何重复项。这在常规sub中有效,但当我尝试在工作表_更改中执行此操作时,它不会执行。纸上没有任何变化。如果我更改列表上的值,我需要代码自动执行 Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Range("B2:B14").AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange

我编写了一段代码,其中一列中的数字列表需要粘贴到另一列中,而不需要任何重复项。这在常规sub中有效,但当我尝试在工作表_更改中执行此操作时,它不会执行。纸上没有任何变化。如果我更改列表上的值,我需要代码自动执行

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Range("B2:B14").AdvancedFilter _
    Action:=xlFilterCopy, _
    CopyToRange:=Range("C3"), _
    Unique:=True
End Sub

询问宏名称,即代码未编译的指示。

因此,这是少数几件事之一,注释中已介绍了其中的大部分

启用事件必须处于启用状态。 您需要在适当的工作表模块中使用工作表更改子模块

蓝色箭头是它需要在的地方,或者不管你的工作表叫什么

红色箭头是点1

将Application.EnableEvents=False放在更改事件的顶部,将Application.EnableEvents=True放在底部

进行更改时,您给出的代码依赖于B2中的数据,如果B2中有两个,则将创建一个副本。你可以在gif中看到我的意思。
与中不同,完全冻结/崩溃?如果在处理Excel在修改工作表时触发的事件时修改工作表,是否会无限次地重新进入处理程序?在顶部设置Application.EnableEvents=False,在底部设置=True。为了提供帮助,我们需要更清楚地描述不工作的确切含义。请您的帖子澄清。选择活动表。范围。。。指令,按F9。现在编辑器的左边缘应该有一个红点,这叫做断点。转到工作表,修改任何内容。如果VBE弹出带有亮黄色突出显示断点的行,则代码将执行。工作表\u更改位于一个特定工作表的代码隐藏中,仅当该工作表被修改时才会运行。是否在正确图纸模块的代码后面?或者,无论此工作簿中修改了什么工作表,您都需要运行它吗?或者它在任何活动的工作簿中?如果您将application.enableevents放在事件中,但您的事件已关闭,则它们不会重新打开,因为事件未被执行。代码在我这边有效。如前所述,Application.EnableEvents=True不会更改您的工作表。它使工作表更改处理程序在以后修改工作表时被调用。您需要Application.EnableEvents为True才能允许事件处理程序运行,并且您需要在开始时将其关闭,然后在结束时将其重新打开,就像我的第一条评论所说的那样,否则您的处理程序将重新进入,这将导致崩溃。感谢您花时间这么做。请注意,评论中几乎涵盖了所有内容——我想一张动画gif抵得上千言万语-实际上-Place Application.EnableEvents=False在您的更改事件顶部不在上面的代码中,仍然没有回答,但我不想继续讨论,他们也花时间写了出来,这正是我所要求的。@brownesatnight是的,很抱歉我拿了截图,忘了添加它。每当您在事件处理中执行任何操作时,您都需要在持续时间内关闭事件,否则您会创建一个无休止的事件循环,因为它正在进行更改,从而触发on change事件。
Sub RunEvents()
    Application.EnableEvents = True
end sub