我有一个excel电子表格,我需要从列表中插入数据验证,到目前为止还没有问题,但我需要能够选择多个条目,而不会覆盖以前的条目作为正常的数据验证,所以最终结果是:
列表 | |
---|---|
芒果 | 苹果、芒果、像素|
Iphone | 像素,苹果 |
像素 | |
苹果 | 苹果,芒果 |
芒果 | 苹果、芒果、像素|
Iphone | 像素,苹果 |
像素 |
我修改了代码,只在实际需要将2个字符串连接在一起时才添加空格和逗号。因此,在选择第二个值之前,第一个值不会附加逗号。
我还对它进行了修改,使细胞能够被清除。现在,按Delete可以正确地允许用户清除单元格。
Private Sub Worksheet_Change(ByVal Target As Range)
'UpdatebyExtendoffice20180510
Dim I As Integer
Dim xRgVal As Range
Dim xStrNew As String
Dim xStrOld As String
Dim xFlag As Boolean
Dim xArr
On Error Resume Next
Set xRgVal = Cells.SpecialCells(xlCellTypeAllValidation)
If (Target.Count > 1) Or (xRgVal Is Nothing) Then Exit Sub
If Intersect(Target, xRgVal) Is Nothing Then Exit Sub
Application.EnableEvents = False
xFlag = True
xStrNew = Target.Value
Application.Undo
xStrOld = Target.Value
If xStrNew <> "" Then
If InStr(1, xStrOld, xStrNew) = 0 Then
xStrNew = xStrNew & IIf(xStrOld <> "", ", " & xStrOld, "")
Else
xStrNew = xStrOld
End If
End If
Target.Value = xStrNew
Application.EnableEvents = True
End Sub
我留下了它,以防它被用于没有复制到这篇文章的代码中,但xArr
&已声明但未使用I
。CCD_ 3被声明并设置为CCD_。