所以我刚刚从here了解了#34; Option Compare Text"和"选项比较二进制"区分.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
我需要这个if else语句来检查用户是否想要区分大小写。 "选项"放在那里让我的.Match函数工作(稍后在代码中找到)。
我理解" Option"代码必须在顶部输入,但我需要此选项才能保持动态,因为此选项将提供给用户在电子表格中设置。
所以我的问题是,有没有办法以某种方式为if-else语句中的.Match函数设置区分大小写?
答案 0 :(得分:1)
创建两个独立的模块;一个名为 MText 的OPTION COMPARE TEXT
,一个名为 MBinary OPTION COMPARE BINARY
,并根据需要从正确的模块调用相应的函数。
或者,对于更面向对象的方法,创建两个类 CBinary 和 CText ,它们实现相同的MATCH测试接口,并在任何给定的情况下实例化您需要的那个时间。
答案 1 :(得分:0)
这两个选项不能在一个模块中使用,因此方法是从两个独立的模块调用代码,一个选项compare text and another
一个option compare binary
。
另一种方法是使用option compare binary
与lcase
或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