VBA:if-else语句中MATCH的区分大小写选项

时间:2015-06-15 03:09:43

标签: excel vba excel-vba

所以我刚刚从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函数设置区分大小写?

2 个答案:

答案 0 :(得分:1)

创建两个独立的模块;一个名为 MText OPTION COMPARE TEXT,一个名为 MBinary OPTION COMPARE BINARY,并根据需要从正确的模块调用相应的函数。

或者,对于更面向对象的方法,创建两个类 CBinary CText ,它们实现相同的MATCH测试接口,并在任何给定的情况下实例化您需要的那个时间。

答案 1 :(得分:0)

这两个选项不能在一个模块中使用,因此方法是从两个独立的模块调用代码,一个选项compare text and another一个option compare binary
另一种方法是使用option compare binarylcaseucase进行比较,如下例所示:

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