尝试将VBA文本框中自动添加和排序的答案删除到excel单元格中

尝试将VBA文本框中自动添加和排序的答案删除到excel单元格中,excel,vba,duplicates,add,Excel,Vba,Duplicates,Add,我有一个代码可以添加,如果根据某个标准提供答案,它会将自己添加到列表中。由于我一直在对程序的其余部分进行故障排除,因此我积累了大量已添加的答案。如果我选择单元格,它会闪烁,如果我尝试手动删除,它会陷入“循环”,为了做任何事情,我必须崩溃excel Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'sorts supervisor add list Const myCol As String = "H" Const N As

我有一个代码可以添加,如果根据某个标准提供答案,它会将自己添加到列表中。由于我一直在对程序的其余部分进行故障排除,因此我积累了大量已添加的答案。如果我选择单元格,它会闪烁,如果我尝试手动删除,它会陷入“循环”,为了做任何事情,我必须崩溃excel

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'sorts supervisor add list
Const myCol As String = "H"
Const N As Long = 2
Dim r As Long
If Not Intersect(Target, Range(myCol & ":" & myCol)) Is Nothing Then
r = Cells(Rows.Count, myCol).End(xlUp).Row
If r < N Then r = N
With Sheet2.Sort
.SortFields.Clear
.SortFields.add Key:=Range(myCol & N), SortOn:=xlSortOnValues, _ Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range(myCol & N & ":" & myCol & r)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For x = r To N + 1 Step -1
If Cells(x, myCol).Value = Cells(x - 1, myCol).Value Then Cells(x, _ myCol).Delete shift:=xlUp
Next 
End If

此外,它在删除重复项时遇到问题。

如果您可能触发正在处理的事件,通常建议禁用事件处理代码中的事件

Delete
将导致选择更改,从而再次触发此事件

要解决此问题,请在开始处添加
Application.EnableEvents=False
,然后在结束处添加
True

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Application.EnableEvents = False
    '...your code here
    Application.EnableEvents = True

End Sub

如果可能触发正在处理的事件,通常建议禁用事件处理代码中的事件<代码>删除将导致
选择
更改,这将导致此事件再次触发。看见添加
Application.EnableEvents=False
作为开始,然后在结尾添加
True
。如果这不能解决问题,那么我们需要更多关于数据的信息。@byron[application.enableevents=false…true]似乎已经修复了它!谢谢我补充了一个恰当的答案。如果它解决了问题,请接受它(在投票按钮下选中)。这有助于其他人。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Application.EnableEvents = False
    '...your code here
    Application.EnableEvents = True

End Sub