我最近从Excel for Mac 2011升级到Excel for Mac 2016,发现了一个错误。我想确定此问题是特定于Mac 2016的VBA Excel还是其他计算机上正在发生。
Dim gg As Range
Set gg = Range("a1:s16000")
gg.Replace What:=ChrW(&H1D48), Replacement:="|d", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
此代码将正确地将heyᵈ
更改为hey|d
。但这会错误地将dude
更改为|du|de
,这不应该发生,因为ChrW(&H1D48)
不是正常d而是上标d。我在Mac 2011的Excel中没有这个问题,但在Mac 2016的Excel中没有,并且想知道其他人是否遇到相同的问题。
答案 0 :(得分:1)
Excel试图通过不区分大小写来帮助您。
尽管英语字母表中可能只有成对的匹配字符(即D
与d
),但是对于其他字符集而言,存在的字符可能被视为等效。
在您角色的例中:d = D = ᵈ = ⅆ
一个更常见的示例(无论如何,我住的地方)是E = e = É = é
。
通过更改MatchCase := True
,使搜索对大小写不敏感,您应该能够避免此问题。
另请参见this information有关用于比较字符串的EXACT
函数。
Option Compare
另一个选项是使用Option Compare
语句在模块级别声明您的敏感性:
语法:
Option Compare {
Binary|Text|Database
}
如果使用Option Compare
语句,则该语句必须在任何过程之前出现在模块中。 Option Compare
语句为模块指定字符串比较方法(Binary
,Text
或Database
)。如果模块不包含Option Compare
语句,则默认文本比较方法为**Binary**
。
Option Compare Binary
会根据从字符的内部二进制表示形式得出的排序顺序进行字符串比较。在Microsoft Windows中,排序顺序由代码页确定。以下示例显示了典型的二进制排序顺序:
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text
会根据由系统区域设置确定的不区分大小写的文本排序顺序进行字符串比较。使用Option Compare Text
对相同字符进行排序时,将产生以下文本排序顺序:
(A=a) < ( À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)
(有关更多信息,请参见source。)