簡體   English   中英

不區分大小寫的VBA腳本

[英]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的優勢。

根據這個

嘗試使用

Option Compare Text

在您的代碼之上。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM