我在Excel 2003中使用VBA来应用验证以将验证应用于来自命名列表的给定范围的单元格。然后,用户可以从下拉列表中选择值。
编辑:给定一个名为'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
一切正常,但问题是当从命名列表应用验证时,它不区分大小写。即如果下拉选项是“John Smith”,则用户可以在经过验证的单元格中键入“john smith”或“john SmiTh”,Excel仍会将其视为有效条目。
我知道通过工具手动创建列表 - >验证...会使查找验证区分大小写,但对于我的情况,这是不可行的 - 我必须填充命名列表并以编程方式分配验证。
有没有人知道确保基于命名列表的Excel验证区分大小写的方法?
感谢。
答案 0 :(得分:2)
你可以在给定验证范围的情况下构建验证列表(假设它不是太大)
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
答案 1 :(得分:2)
答案 2 :(得分:1)
StrComp怎么样?如果使用vbBinaryCompare,则StrComp字符串比较区分大小写。例如:
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