2015-06-15 54 views
1

因此,我剛剛從here中瞭解到「選項比較文本」和「選項比較二進制」以區分.Match函數的區分大小寫。VBA:區分大小寫在if-else語句中的MATCH選項

眼下,這個if-else語句說明了什麼,我試圖做(儘管有錯誤):

If dictionaryData.Cells(4, 2).Value = "Yes" Then 
    caseSensitive = True 
    NetworkNameDict.CompareMode = vbBinaryCompare 
    Option Compare Binary 
Else 
    caseSensitive = False 
    NetworkNameDict.CompareMode = vbTextCompare 
    Option Compare Text 
End If 

我需要這個,如果檢查else語句,如果用戶想通過個案比較靈敏度。 「選項」放在那裏,使我的.Match函數可以工作(稍後在代碼中找到)。

據我所知,「選項」代碼必須在頂部輸入,但我需要這個選項保持動態,因爲這個選項給予用戶在電子表格中設置。

所以我的問題是,有沒有辦法以某種方式做一個if-else語句中的.Match函數的區分大小寫設置?

回答

0

這兩個選項不能在一個模塊中使用,因此方法是從兩個分開的模塊中調用代碼,其中一個選項compare text and anotheroption compare binary一個。
另一種方法是使用與option compare binarylcase例如ucase在比較如下:

Option Compare Binary 

Sub test() 
    Debug.Print TypeName("YES") & " comparing" 
    Debug.Print "YES" = "yes", "case sensitive" 
    Debug.Print LCase("YES") = "yes", "not case sensitive" 
    Debug.Print "YES" = UCase("yes"), "not case sensitive" 
    Debug.Print UCase("Yes") = UCase("yEs"), "not case sensitive" 

    Debug.Print TypeName(1.1) & " vs " & TypeName("1.1") 
    Debug.Print 1.1 = "1.1", "not case sensitive" 

    Debug.Print TypeName(1) & " vs " & TypeName("1") 
    Debug.Print 1 = "1", "not case sensitive" 

    Debug.Print TypeName(10000001) & " vs " & TypeName("10000001") 
    Debug.Print 10000001 = "10000001", "not case sensitive" 
End Sub 

在立即窗口輸出將是

String comparing 
False   case sensitive 
True   not case sensitive 
True   not case sensitive 
True   not case sensitive 
Double vs String 
True   not case sensitive 
Integer vs String 
True   not case sensitive 
Long vs String 
True   not case sensitive 
1

創建兩個單獨的模塊;一個叫做MText帶有OPTION COMPARE TEXT,一個叫MBinary帶有OPTION COMPARE BINARY,並根據需要從正確的模塊中調用相應的功能。

另外,一個更面向對象的方法,創建兩個類CBinaryCTEXT它們實現匹配測試相同的接口和實例,你需要在任何給定的時間之一。

相關問題