创build数据validation列表,当一些值有逗号?
我正在使用以下方法创build数据validation列表:
sDataValidationList = sDataValidationList & wksCalculation.Cells(r, lActivityNoColumn).value & ","
然后我将它应用到一个单元格使用:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=s
这在大多数情况下都能正常工作,但是当任何wksCalculation.Cells(r, lActivityNoColumn).value
包含逗号时,那些string将被数据validation列表分割,并且每个逗号分隔的string部分都显示为一个单独的项目。
我怎样才能修改我的代码也有用,当进入数据validation列表中的一些值在它们中有逗号?
在使用Type:=xlValidateList
的数据validation中, Formula1
可以是以逗号分隔的列表,也可以是对该列表范围的引用的公式string。 在逗号分隔的列表中,逗号具有特殊意义。 在一个范围的参考它没有。
所以假设你从wksCalculation.Cells(r, lActivityNoColumn)
连接的列表在Sheet2!A1:A5
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet2!A1:A5"
将工作。
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & wksCalculation.Range("A1:A5").Address(External:=True)
也应该工作。
你将不得不欺骗Excel;)
这是一个例子。 将该逗号replace为ASC代码为0130
的相似外观字符
Dim dList As String dList = Range("B14").Value '~~> Replace comma with a similar looking character dList = Replace(dList, ",", Chr(130)) With Range("D14").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=dList .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With
创build一个包含您的列表项目的命名范围ValidValues
; 在数据validation公式中使用该命名范围=ValidValues
。 如果有效值的数量可以改变,我build议你使命名范围引用一个表列,像SomeTable[SomeColumn]
– 这样的方式,该列中的任何新值将自动成为命名范围的一部分,因此,自动添加到有效值的列表。