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