从命名列表的Excel中区分大小写validation

我在Excel 2003中使用VBA来应用validation,以将validation应用于指定列表中的给定范围的单元格。 用户可以从下拉列表中进行select。

编辑:这是我如何设置validation,给定一个名为“MyLookupList”

With validatedRange.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="=MyLookupList" .ErrorMessage = "Invalid value. Select one from the dropdown list." .InCellDropdown = True End With 

所有这些工作正常,但问题是,当从命名列表中应用validation时,它是不区分大小写的。 也就是说,如果下拉选项是“John Smith”,那么用户可以在validation的单元格中键入“john smith”或“john smiTh”,Excel将仍然将其视为有效条目。

我知道手动创build一个列表通过工具 – >validation…将使查找validation的情况下,敏感,但对我的情况这是不可行的 – 我必须填充指定的列表和分配validation编程。

有谁知道一种方法来确保基于命名列表的Excelvalidation区分大小写?

谢谢。

那么你可以build立validation列表给定的validation范围(假设它不是太大)

 Dim sValidationList As String Dim iRow As Integer 'build comma-delimited list based on validation range With oValidationRange For iRow = 1 To .Rows.Count sValidationList = sValidationList & .Cells(iRow, 1) & "," Next End With 'trim trailing comma sValidationList = Left(sValidationList, Len(sValidationList) - 1) 'apply validation to data input range With oDataRange.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=sValidationList .ErrorMessage = "Invalid value. Select one from the dropdown list." .InCellDropdown = True End With 

看看这个:

http://www.contextures.com/xlDataVal14.html

我没有testing它,这有点复杂,但我认为它会做你想做的。

StrComp怎么样? 如果使用vbBinaryCompare,StrCompstring比较是区分大小写的。 例如:

  Set c = Range("MyLookupList").Find(Range("ValidateRange"), _ LookIn:=xlValues) If Not c Is Nothing Then If StrComp(c, Range("ValidateRange"), vbBinaryCompare) = 0 Then 'Match ' MsgBox "OK" Else MsgBox "Problem" End If End If