[英]Not case sensitive vba script
我需要使脚本在执行if子句时不区分大小写。为了解决此问题,我在脚本中的其他位置放置了“ compare.mode = vbTextcompare不起作用”,但在我的情况下不起作用。 。脚本没有错误或任何其他问题。比较之间的范围是全部以大写字母开头的名称,但匹配的部分以小写字母...对此的任何解决方案?
Sub DropDown14_Change()
Dim ScCell As Range, key
Dim Dic As Object: Set Dic = CreateObject("Scripting.Dictionary")
Set ws = Worksheets("Dashboard")
Set wsD = Worksheets("DATA")
Set complistDict = CreateObject("Scripting.Dictionary")
Dim DD14V As Variant
complistDict.RemoveAll
Dim DD14 As Object
Set complistDict = Nothing
Set complistDict = CreateObject("scripting.dictionary")
ws.Shapes("Drop Down 16").ControlFormat.RemoveAllItems
Set DD14 = ws.Shapes("Drop Down 14").OLEFormat.Object
Set DD16 = ws.Shapes("Drop Down 16").OLEFormat.Object
DD14V = DD14.List(DD14.Value)
'ws.dropdown14.Clear
For Each ScCell In wsD.Range("E2", wsD.Cells(Rows.Count, "E").End(xlUp))
Dic.CompareMode = vbTextCompare
If ScCell.Value = DD14V Then
If Not Dic.Exists(LCase(rCell.Offset(, -1).Value)) Then
Dic.Add LCase(rCell.Offset(, -1).Value), Nothing
End If
End If
Next ScCell
'MsgBox DD14.List(DD14.ListIndex)
For Each key In Dic
DD16.AddItem key
Next
End Sub
如果我理解正确,您想
If ScCell.Value = DD14V Then
不区分大小写。
您可以放置
Option Compare Text
在宏的开头,在第一个Sub
语句之前。
或者,要将大小写不敏感限制为仅该行,可以使用:
If Ucase(ScCell.Value) = Ucase(DD14V) Then
但是您的代码似乎还有其他错误。
我建议您将Option Explicit
放在宏的开头(在第一个Sub
之前),这将有助于调试。
我不明白为什么MS将默认情况下不要求变量声明。 选择Tools/Options/Editor
然后选中Require Variable Declaration
。 这会将Option Explicit
放置在任何新模块的开头。
为字典对象使用“早期”绑定而不是“后期”绑定也可能会有所帮助,以获得Intellisense的优势。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.