从使用VBA允许多个选择的Excel下拉列表中删除单个选择

时间:2019-07-11 08:46:22

标签: excel vba

我已经使用一些VBA代码使用下拉列表为每次销售选择了多个选择。该代码还可以防止选择相同的选项,该选项非常有用,直到您在选择中出现错误并需要删除所有选择为止,因为我无法突出显示和删除错误做出的选择,基本上在选择后对其进行编辑。

我对VBA不太熟练,因此不确定该怎么做-下面的代码可以正常工作,我不得不缩进所有内容,希望它仍能正确读取

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Oldvalue As String
    Dim Newvalue As String
    Application.EnableEvents = True
    On Error GoTo Exitsub
    If Target.Address = "$C$3" Or Target.Address = "$C$4" Or Target.Address = "$C$5" Or Target.Address = "$C$6" Or Target.Address = "$C$7" Or Target.Address = "$C$8" Or Target.Address = "$D$3" Or Target.Address = "$D$4" Or Target.Address = "$D$5" Or Target.Address = "$D$6" Or Target.Address = "$D$7" Or Target.Address = "$D$8" Or Target.Address = "$E$3" Or Target.Address = "$E$4" Or Target.Address = "$E$5" Or Target.Address = "$E$6" Or Target.Address = "$E$7" Or Target.Address = "$E$8" Or Target.Address = "$F$3" Or Target.Address = "$F$4" Or Target.Address = "$F$5" Or Target.Address = "$F$6" Or Target.Address = "$F$7" Or Target.Address = "$F$8" Then
      If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
        GoTo Exitsub
      Else: If Target.Value = "" Then GoTo Exitsub Else
        Application.EnableEvents = False
        Newvalue = Target.Value
        Application.Undo
        Oldvalue = Target.Value
          If Oldvalue = "" Then
            Target.Value = Newvalue
          Else
            If InStr(1, Oldvalue, Newvalue) = 0 Then
                Target.Value = Oldvalue & vbNewLine & vbNewLine & Newvalue
          Else:
            Target.Value = Oldvalue
          End If
        End If
      End If
    End If
    Application.EnableEvents = True
    Exitsub:
    Application.EnableEvents = True
    End Sub

当我尝试删除某个项目时,验证就会生效,并说我无法删除该项目

0 个答案:

没有答案
相关问题