在比较单词时,VBA摆脱了区分大小写?

Pha*_*anx 31 excel vba case-sensitive excel-vba

我正在开发一个VBA程序,它允许用户键入地址并通过将地址的元素与数据库匹配来查找位置.

不幸的是,我在案例敏感性方面经常遇到问题.

例如,当我使用此代码时:

For i = 11 To lRowB
Range("B" & i).Activate
myResult = IsNumeric(Application.Match(ActiveCell.Value, manilaListRange, 0))
Run Code Online (Sandbox Code Playgroud)

它会将活动单元格的值与我的数据库中的单词列表进行比较.问题是,如果在我的活动单元格中,单词是"miami"或"MIAMI",只有"迈阿密"在数据库中,它将无法工作......

其他例子:

If Range("J6").Value = "tawi" Then
Range("J6").Value = "Tawi-Tawi"
End If
Run Code Online (Sandbox Code Playgroud)

同样的问题,只有用相同案例写的字才会起作用.

我怎么能摆脱这个?这特别烦人,我不能在每种情况下都可以重写我的数据库!

提前致谢 !

Flo*_*ris 55

您可以在模块级别发布声明:

Option Compare Text
Run Code Online (Sandbox Code Playgroud)

这使得所有"文本比较"都不区分大小写.这意味着以下代码将显示消息"this is true":

Option Compare Text

Sub testCase()
  If "UPPERcase" = "upperCASE" Then
    MsgBox "this is true: option Compare Text has been set!"
  End If
End Sub
Run Code Online (Sandbox Code Playgroud)

例如,参见http://www.ozgrid.com/VBA/vba-case-sensitive.htm.我不确定它是否能完全解决所有实例(例如Application.Match函数)的问题,但它会处理所有if a=b语句.至于Application.Match- 您可能希望使用该LCase函数将参数转换为大写或小写.

  • @rryanp`选项比较文本`是_supposed_是大小写**不敏感** - 所以你看到的是你所期望的.如果你想要它是**敏感的**(这样``i3vz"<>"i3vZ"`你可以使用'Option Compare Binary`代替. (4认同)
  • 供参考 - Application.Match 开始时不区分大小写,因此选项比较文本是打开还是关闭无关紧要。 (3认同)
  • 啊,我现在看到我在倒读他的帖子。太好了——我会去试试 Option Compare Binary——非常感谢你提供的信息! (2认同)

Vas*_*nth 21

您可以将这两个值转换为小写并进行比较.

这是一个例子:

If LCase(Range("J6").Value) = LCase("Tawi") Then
   Range("J6").Value = "Tawi-Tawi"
End If
Run Code Online (Sandbox Code Playgroud)