[英]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.