允许多个条目的数据验证

时间:2016-04-21 08:37:43

标签: excel vba excel-vba

我已经写下了以下几行,以便允许用户在数据验证范围内插入多一个条目。因此,如果下拉列表包含元素:x1, x2, x3, .., xn,则对于范围中的任何单元格,可以选择并插入第一个x1值,然后在同一个单元格中选择并插入{{1}结果为:x3,结果如此。 问题是,当用户希望删除其中一个值时,他会收到一条excel错误x1, x3。因此,他必须删除单元格的全部内容,然后再次选择他想要的值。你可以帮助改善这一点吗?

以下是代码:

the user has restricted the values for this cell

2 个答案:

答案 0 :(得分:0)

通过VBA违反验证是可能的,这就是您的代码首先工作的原因。删除条目是一种手动操作,其中将单元格内容(以逗号分隔的列表)与验证列表进行比较。 您可以执行以下操作之一:

  • 使用您的单元格进行验证,仅选择项目,并将逗号分隔选择写入不同的单元格。

  • 为单元格编写一个编辑函数 - 这样编辑的结果将再次通过VBA写入单元格。

  • 将列表(以及删除中的所有可能结果添加到验证列表中)(非常混乱)

答案 1 :(得分:0)

尝试使用以下

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngDV As Range
    Dim oldVal As String
    Dim newVal As String
    If Target.Count > 1 Then GoTo exitHandler
        On Error Resume Next
        Set rngDV = Range("G:G")
        On Error GoTo exitHandler
        If rngDV Is Nothing Then GoTo exitHandler
            If Intersect(Target, rngDV) Is Nothing Then
            ElseIf Target.Column = 7 Then
                Application.EnableEvents = False
                newVal = Target.Value
                Application.Undo
                oldVal = Target.Value
                Target.Value = newVal
                If oldVal = "" Then
                Else
                If newVal = "" Then
                Else
                Target.Value = oldVal & ", " & newVal
            End If
        End If
    End If
exitHandler:
    Application.EnableEvents = True
End Sub
相关问题