我将此宏用于单元格下拉选项列表中多个值的选择:
https://www.youtube.com/watch?v=kzjhtEHCRmY
https://docs.google.com/document/d/1JU7G_Tna2zPBtcG2TlarxKCTbuinNsg5LwBqzmuJYK8/edit
宏:
Apple
Banana
Strawberry
但是,当重新选择下拉列表中另一个选定值上方的值时,重新选定的值将附加在另一个值后面。例如:
下拉列表为:
1. Apple, 2. Banana and 3. Strawberry
当我选择时:
Apple, Banana, Strawberry
我得到的结果是
Apple, Strawberry
如果我然后“取消选择”香蕉,我会得到...
Apple, Strawberry, Banana
...然后再“重新选择”香蕉,我得到...
Apple, Banana, Strawberry
但是...我想要...
{{1}}
...因此应使用原始列表的顺序。
我需要如何调整宏才能执行此操作?
答案 0 :(得分:1)
添加以下过程
Public Sub AddReordered(ByRef Target As Range, ByVal NewValue As String)
Dim Output As String
If Target.Validation.Type = 3 Then
Dim TestString As String
TestString = ", " & NewValue & ", "
Dim Item As Variant
For Each Item In Range(Target.Validation.Formula1).Value
If InStr(1, TestString, ", " & Item & ", ") > 0 Then
Output = IIf(Output <> vbNullString, Output & ", ", "") & Item
End If
Next Item
End If
Target.Value = Output
End Sub
并替换您的代码
Target.Value = strVal & newVal
与
AddReordered Target, strVal & newVal